Wiederbelebt von "kein Internetzugang" in Python

Einführung

** Leiden Sie alle unter einem plötzlichen "kein Internetzugang"? ** **.

netsh_test1 (3)_LI.jpg

Ich war gestört. Ich habe ein Skript erstellt, um Routineaufgaben zu automatisieren und es auf einem alten PC zu speichern. Als ich den PC eingeschaltet ließ, befand ich mich in einem Zustand "kein Internetzugang", bevor ich es wusste, und ich musste das PC-Netzwerk manuell trennen und wieder verbinden. Es ist beängstigend, dass der Prozess stoppt, bevor Sie es wissen, obwohl er automatisiert und unbeaufsichtigt bleibt.

Daher habe ich versucht, den Netzwerkstatus zu überprüfen und die Verbindung im Skript wiederherzustellen, daher werde ich sie einführen.

(Ich weiß nicht, warum Sie überhaupt keinen Internetzugang haben. Bitte lassen Sie mich wissen, wer Sie sind.)

Umgebung

· Windows 7 ・ Anaconda3

Fazit (Code) vorerst

Der Inhalt besteht hauptsächlich aus Windows-Befehlen, aber ich rufe die Befehle von Python aus auf, da sie Teil des Skripts sind.

def is_ping_ok():
    proc = subprocess.run(["ping", "yahoo.co.jp"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    ret = proc.stdout.decode("cp932")
    if "Nicht gefunden" in ret:
        return False
    else: return True

def restart_network():
    subprocess.run(["netsh", "wlan", "disconnect"])
    subprocess.run(["netsh", "wlan", "connect", 'name="SSID, zu der Sie eine Verbindung herstellen möchten"'])
    time.sleep(5)

def check_network():
    if not is_ping_ok():
        restart_network()

        if is_ping_ok():
            return "Restarted!"
        else: return "Error"
    return "OK"

Im Moment versuche ich es einmal und gebe auf, wenn es nicht zurückkommt, aber wenn du nicht gerne verlierst, kannst du gründlich zurückgehen, bis es zurückkommt.

Kommentar

Überprüfen Sie den Netzwerkstatus

Verwenden Sie den Befehl ping, um zu überprüfen, ob Sie über einen Internetzugang verfügen. Informationen zum plötzlich auftretenden Unterprozess finden Sie in diesem Artikel.

Das Folgende ist für den Internetzugang

>>> import subprocess

>>> proc = subprocess.run(["ping","yahoo.co.jp"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>> print(proc.stdout.decode("cp932"))

yahoo.co.jp [182.22.59.229]32 Bytes Daten senden Ping an:
182.22.59.Antwort von 229:Anzahl der Bytes=32 Stunden=11ms TTL=50
182.22.59.Antwort von 229:Anzahl der Bytes=32 Stunden=16ms TTL=50
182.22.59.Antwort von 229:Anzahl der Bytes=32 Stunden=21ms TTL=50
182.22.59.Antwort von 229:Anzahl der Bytes=32 Stunden=21ms TTL=50

182.22.59.229 Ping-Statistiken:
Anzahl der Pakete:Senden=4 erhalten=4, Verlust= 0 (0%Verlust)、
Ungefähre Hin- und Rückfahrtzeit(Millisekunde):
Minimum=Maximal 11 ms=21 ms, durchschnittlich= 17ms

Ohne Internetzugang

>>> proc = subprocess.run(["ping","yahoo.co.jp"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>> print(proc.stdout.decode("cp932"))
Host Yahoo in Ping-Anfrage.co.jp wurde nicht gefunden. Überprüfen Sie den Hostnamen und versuchen Sie es erneut.

Wenn der Rückgabewert "nicht gefunden" enthält, haben wir festgestellt, dass kein Internetzugang vorhanden ist. Ich denke, das hängt von der Sprache des Terminals ab.

def is_ping_ok():
    proc = subprocess.run(["ping", "yahoo.co.jp"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    ret = proc.stdout.decode("cp932")
    if "Nicht gefunden" in ret:
        return False
    else: return True

Neustart des Netzwerks

Wenn Sie keinen Internetzugang haben, versuchen Sie, das Netzwerk mit dem folgenden Befehl erneut zu verbinden. Einzelheiten zum Befehl finden Sie in diesem Artikel.

> netsh wlan disconnect
Schnittstelle"WLAN-Verbindung"Trennungsanforderung erfolgreich abgeschlossen.

> netsh wlan connect name="SSID, zu der Sie eine Verbindung herstellen möchten"
Die Verbindungsanforderung wurde erfolgreich abgeschlossen.

Wenn es mit Python aufgerufen wird, ist es wie folgt. Ich lege den Schlaf ein, damit ich nicht zum nächsten Prozess übergehe, ohne die Verbindung herzustellen.

def restart_network():
    subprocess.run(["netsh", "wlan", "disconnect"])
    subprocess.run(["netsh", "wlan", "connect", 'name="SSID, zu der Sie eine Verbindung herstellen möchten"'])
    time.sleep(5)

Zusammenfassung

Ich stellte vor, wie man das plötzliche "kein Internetzugang" bekämpft.

Wir suchen einen intelligenteren Weg.

Recommended Posts

Wiederbelebt von "kein Internetzugang" in Python
Greifen Sie über Python auf Bitcoind zu
OCR aus PDF in Python
Greifen Sie über Python auf Oracle DB zu
Versuchen Sie den Zugriff auf das SPS-Register in Python
Extrahieren Sie mit Python Text aus Bildern
In Python gibt es keinen Schalter
So greifen Sie über Python auf Wikipedia zu
Greifen Sie mit OAuth 2.0 von Python aus auf Tabellenkalkulationen zu
Greifen Sie über Python auf die Shader-Knoten von Blender zu
Greifen Sie mit Python auf die Twitter-API zu
Extrahieren Sie mit Python Zeichenfolgen aus Dateien
Erhalten Sie Wechselkurse von offenen Wechselkursen in Python
Verhindern Sie den doppelten Start von cron in Python
In Python + SQLite3 "OperationalError: keine solche Spalte:"
Exklusiver Dateizugriff zwischen Prozessen in Python
Zugriff auf RDS von Lambda (Python)
Laden Sie Bilder von der URL-Liste in Python herunter
Holen Sie sich den Batteriestand von SwitchBot mit Python
ModuleNotFoundError in Python: Kein Modul mit dem Namen story
Generieren Sie eine Klasse aus einer Zeichenfolge in Python
Generieren Sie mit Python eine C-Sprache aus dem S-Ausdruck
Greifen Sie über Cognito in Python auf S3-Ressourcen zu
In Python von Markdown in HTML konvertieren
Holen Sie sich mit Python die Niederschlagswahrscheinlichkeit aus XML
Importfehler: Kein Modul mit dem Namen 'xxxxx' in Python3
Abrufen des Metrikverlaufs von MLflow in Python
Holen Sie sich mit Python Zeitreihendaten von k-db.com
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Metaanalyse in Python
Unittest in Python
Von der Datei zur Diagrammzeichnung in Python. Grundstufe Grundstufe
Epoche in Python
Zwietracht in Python
ModuleNotFoundError: Kein Modul mit dem Namen'_bz2 'in Python in pyenv
Deutsch in Python
DCI in Python
SQL zu SQL
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Laden Sie den Befehl von yml mit Python und führen Sie ihn aus
Verwenden Sie Python in Ihrer Umgebung von Win Automation
Plink in Python
Konstante in Python
MeCab von Python
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
Rufen Sie Python-Skripte aus Embedded Python in C ++ / C ++ auf
Erstellen Sie ein Datum / Uhrzeit-Objekt aus einer Zeichenfolge in Python (Python 3.3).
Laden Sie Bilder von der URL mit Pillow in Python 3