Python -Skript zur Überwachung der Netzwerkverbindung

Python -Skript zur Überwachung der Netzwerkverbindung
Die Notwendigkeit, dass unsere Geräte immer mit dem Internet verbunden sind.

Es ist kritisch, Anwendungen und Geräte zu haben, die sich anmelden. Wenn Sie ein Tool haben, mit dem Sie beobachten können, wenn Ihr Netzwerk ausfällt.

Im heutigen Tutorial werden wir einen einfachen Netzwerkmonitor erstellen, der Ihre Internetkonnektivität kontinuierlich überwacht, indem wir Ping -Anfragen an eine externe Ressource senden. Das Skript, das wir erstellen werden, behalten auch Protokolle, wenn das Internet sinkt und die Dauer der Ausfallzeiten:

Projektanforderungen

Für dieses Projekt brauchen wir nur:

  • Python -Programmierung Grundlagen
  • Grundlegendes Verständnis von Computernetzwerken.
  • Seien Sie bequem mit dem Terminal.

Projektlogik

Bevor wir uns mit dem Codierungsteil befassen, lassen Sie uns diskutieren und verstehen, was wir erreichen wollen:

Was ist das Netzwerk nach oben und Ausfallzeiten??

Wenn wir über Netzwerk- und Ausfallzeiten sprechen, meinen wir den Zeitraum, in dem die Netzwerkverbindung völlig nicht verfügbar ist, und daher können wir nicht mit Geräten außerhalb unseres Netzwerks kommunizieren. Je länger das Internet nicht verfügbar ist, desto länger die Ausfallzeiten.

So bestimmen Sie Ausfallzeiten

Jetzt, da wir wissen, welche Ausfallzeiten im Internet sind, fragen Sie sich vielleicht: „Wie können wir es bestimmen?”

Ohne unseren Code zu komplizieren, können wir mit Ping gehen. Ein Ping ist eine Methode, bei der wir kontinuierlich eine zuverlässige Server-Server-Cloudflare oder Google-DNS pingen-und dann auf eine Antwort warten.

Wenn wir den Server pingen und es keine Antwort gibt, stellen wir diese bestimmte Zeit fest und werden fortgesetzt, bis wir einen Ping erhalten und die Zeit feststellen.

Wenn wir den Zeitunterschied haben, können wir feststellen, wann das Internet gesunken ist und wie lange.

Wir müssen auch vorsichtig sein, wenn wir einen einzelnen Server pingen.

Hier ist ein Flussdiagramm, das dieses Konzept erklärt:

Reden ist billig; Tauchen wir nun in den Code ein und zeigen, wie diese Logik implementiert wird:

Zeigen Sie mir jetzt den Code

Wie üblich importieren wir in Python zunächst die erforderlichen Bibliotheken. Als nächstes erstellen wir eine Protokolldatei im aktuellen Arbeitsverzeichnis.

Wir verwenden die Socket -Bibliothek, um in der ersten Funktion eine Anforderung an eine externe IP -Adresse zu senden. In diesem Beispiel verwenden wir die Cloudflare Public DNS -Adresse, die eine sehr hohe Verfügbarkeit hat. Wir übergeben auch den Port und verwenden, da es sich um einen DNS -Server handelt, Port 53.

Wir überprüfen dann, dass wir Zugriff auf das Verzeichnis für Protokolldateien haben und beenden, wenn wir keinen Zugriff haben.

Der nächste Schritt besteht darin, die Zeit zu berechnen, die die Netzwerkverbindung abnimmt. Schließlich wickeln wir die gesamte Funktionalität in eine Schleife, wie im folgenden Code gezeigt.

Socket importieren
Importzeit
DateTime importieren
OS importieren
Importsystem
Log_fname = "Netzwerk.Protokoll"
Datei = os.Weg.beitreten (os.getCwd (), log_fname)
def send_ping_request (host = "1.1.1.1 ", Port = 53, Timeout = 3):
versuchen:
Steckdose.setDefaulttimeout (Timeout)
S = Socket.Sockel (Sockel.Af_inet, Sockel.SOCK_STREAM)
S.Connect ((Host, Port))
außer Oserror als Fehler:
falsch zurückgeben
anders:
S.schließen()
RECHT WAHR
Def write_permission_check ():
versuchen:
mit öffnen (Datei, "a") als Datei:
passieren
außer Oserror als Fehler:
print ("Erstellung von Protokolldateien fehlgeschlagen"))
sys.Ausfahrt()
Endlich:
passieren
Def Calculate_time (Start, Stopp):
TIME_DIFFERSON = STOP - START
Sekunden = float (STR (TIME_Diffferenz.Total_seconds ()))
RETEND STR (DATETETIME.Timedelta (Sekunden = Sekunden)).Teilt(".") [0]
defon_net_connection (ping_freq = 2):
Monitor_start_time = datetime.Terminzeit.Jetzt()
MOTD = "Netzwerkverbindungsüberwachung gestartet unter:" + str (monitor_start_time).Teilt(".") [0] +" Senden der Ping -Anforderung in " + str (ping_freq) +" Sekunden "
Druck (MOTD)
mit öffnen (Datei, "a") als Datei:
Datei.schreiben ("\ n")
Datei.Schreiben Sie (MOTD + "\ n")
während wahr:
Wenn send_ping_request ():
Zeit.Schlaf (ping_freq)
anders:
down_time = datetime.Terminzeit.Jetzt()
fail_msg = "Netzwerkverbindung nicht verfügbar unter:" + str (down_time).Teilt(".") [0]
print (fail_msg)
mit öffnen (Datei, "a") als Datei:
Datei.Schreiben (fail_msg + "\ n")
I = 0
Während nicht send_ping_request ():
Zeit.Schlaf (1)
i += 1
Wenn i> = 3600:
I = 0
jetzt = datetime.Terminzeit.Jetzt()
continous_message = "Netzwerk Nicht verfügbare Netzwerke persistent unter:" + str (jetzt).Teilt(".") [0]
drucken (continous_message)
mit öffnen (Datei, "a") als Datei:
Datei.Schreiben Sie (continous_message + "\ n")
up_time = datetime.Terminzeit.Jetzt()
UNTERTIME_MESSAGE = "Netzwerkkonnektivität wiederhergestellt unter:" + str (Up_Time).Teilt(".") [0]
down_time = calculate_time (down_time, up_time)
_m = "Die Netzwerkverbindung war für" + down_time nicht verfügbar
drucken (UPTORE_MESSAGE)
print (_m)
mit öffnen (Datei, "a") als Datei:
Datei.Write (UPTORE_MESSAGE + "\ N")
Datei.schreiben (_m + "\ n")
mon_net_connection ()

Wenn Sie dieses Skript ausführen, erhalten Sie eine Ausgabe, die dem unten gezeigt ähnelt:

Abschluss

Mit dem obigen Skript können wir überwachen, wenn die Netzwerkverbindung verloren geht, und protokollieren Sie es ständig, bis sie verfügbar ist. Dieses einfache Skript ist offen für Verbesserungen. Fühlen Sie sich frei, den Code so anzupassen, dass Sie Ihren Anforderungen entsprechen, und erweitern Sie ihn.