Starten Sie den Router mit Python, Selenium, PhantomJS neu und rufen Sie die WAN-seitige IP-Adresse vom Router ab.
Da Ihr Zuhause noch keine feste IP-Adresse ist, müssen Sie bei jedem Versuch, von außen eine Verbindung zu Ihrem Zuhause herzustellen, die WAN-seitige IP-Adresse des bei Ihnen zu Hause installierten Routers ermitteln. Bisher haben wir die Methode zum Abrufen der WAN-seitigen IP-Adresse vom Heim-LAN über einen externen Server übernommen. Zu diesem Zeitpunkt ist nicht bekannt, ob es sich um ein Router- oder ein Anbieterproblem handelt, aber manchmal war es unmöglich, mit der Außenwelt zu kommunizieren. Ich wusste, dass dies durch einen Neustart des Routers wiederhergestellt werden konnte. Wenn ich jedoch während meiner Abwesenheit nicht mit meinem Zuhause kommunizieren konnte, konnte ich nicht von außen neu starten und mich nicht erholen, bis ich nach Hause kam. Diese Situation war ein großes Problem, als ich einige Tage von zu Hause weg war.
Um dieses Problem zu lösen, haben wir die hier vorgestellte Methode übernommen, in der Hoffnung, dass sie in der vorhandenen Umgebung so billig wie möglich ist. Das heißt, Selenium und PhantomJS werden verwendet, um den Router neu zu starten, wenn ein Kommunikationsfehler auftritt. Es scheint einen besseren Weg zu geben, aber auf diese Weise können Sie den Router neu starten und die WAN-seitige IP-Adresse direkt vom Router abrufen, was nur im LAN möglich ist. Ich habe diesen Inhalt gepostet, wenn er für andere nützlich sein könnte.
Der Router, auf den sich dieses Skript bezieht, ist der PR-500MI von Mitsubishi Electric Co., Ltd., der über eine integrierte ONU und einen Router verfügt, die von NTT ausgeliehen wurden. Wenn Sie einen anderen Router verwenden, ändern Sie diesen bitte je nach Umgebung. Folgendes benötigen Sie, um das Skript zu verwenden:
Python
Selen (Mit Pip installieren Selen installieren.)
Installieren Sie mit PhantomJS (npm install -g phantomjs oder laden Sie es von http://phantomjs.org/download.html herunter, entpacken Sie es und übergeben Sie es .)
beautifulsoup4 (Mit pip installieren beautifulsoup4 installieren)
Die URL für den Zugriff auf den Router lautet wie folgt. Da PR-500MI die Standardauthentifizierung ist, geben Sie Folgendes ein, um sich anzumelden und Informationen abzurufen.
python
http://Nutzername:Passwort@IP-Adresse des Routers
Der Benutzername und das Kennwort sind die Konten, mit denen Sie sich beim Router anmelden. Die IP-Adresse des Routers ist diejenige, als sie eingestellt wurde. Es gibt kein Problem mit der Adresse, an der Sie sich immer anmelden. Fügen Sie dann die URL hinzu, die die Informationen enthält, die Sie erhalten möchten.
python
from bs4 import BeautifulSoup
from selenium import webdriver
class pr500mi(object):
"""This is for PR-500MI."""
def __init__(self):
self.baseurl = 'http://Nutzername:Passwort@IP-Adresse des Routers'
self.driver = webdriver.PhantomJS()
def getip(self):
getipurl = self.baseurl + '/ntt/information/fifth/current/'
self.driver.get(getipurl)
html = self.driver.page_source.encode('utf-8')
soup = BeautifulSoup(html, 'lxml')
ip = soup.findAll(class_='section')[6].findAll('td')
return (ip[1].get_text(), ip[21].get_text()) # ipv4, ipv6
def reboot(self):
rebooturl = self.baseurl + '/ntt/userMaintenance/reboot/'
self.driver.get(rebooturl)
self.driver.find_element_by_id('REBOOT').click()
Rufen Sie mit getip () die IP-Adresse von ipv4 und ipv6 auf der WAN-Seite ab und starten Sie den Router mit reboot () neu. Die URL '/ ntt / information / 5th / current /', '/ ntt / userMaintenance / reboot /' und die letzten beiden Zeilen des Skripts (ip, ipv4, ipv6) können sich aufgrund von Firmware-Updates ändern. Bitte überprüfen Sie, ob die Firmware aktualisiert wurde und nicht funktioniert.
Wenn Sie den Router neu starten, müssen Sie nach dem Neustart die WAN-seitige IP-Adresse abrufen. Verwenden Sie daher den Ruhezustand, um zu warten, bis der Neustart abgeschlossen ist (ca. 2 Minuten), und rufen Sie dann die IP-Adresse ab. ..
Ich führe das obige Skript per E-Mail aus. Die IP-Adressbenachrichtigung und der Neustart des Routers werden durch Auslösen des E-Mail-Empfangs ausgeführt. Zu diesem Zeitpunkt bestand der Hauptzweck auch darin, die WAN-seitige IP-Adresse zu erfassen und neu zu starten. Durch Hinzufügen zum obigen Skript können jedoch die NAT-Einstellungen, die Protokollreferenz usw. getrennt und erneut verbunden werden. In Zukunft möchte ich in zwei Schritten neu starten können, indem ich Geräte hinzufüge, um den Router ein- und auszuschalten.
Ich weiß nicht, ob Bedarf besteht, aber es ist möglicherweise möglich, für jedes Modell eine Bibliothek zur Steuerung über die Befehlszeile zu erstellen.
Recommended Posts