Eine Bibliothek, die Leben und Tod anderer Maschinen durch Ping von Python aus überwacht

So überprüfen Sie die Kommunikation mit anderen Computern mit Python-Code

Wenn Sie das System verwalten, stoßen Sie möglicherweise auf einen Fall, in dem Sie die Lebendigkeit anderer Computer mit dem Befehl ping überwachen möchten. In einem solchen Fall, wenn der Ping-Befehl von einem mit Python erstellten System verwendet wird, ist es meines Erachtens üblich, den OS-Ping-Befehl mithilfe eines Unterprozesses aufzurufen. In diesem Fall gibt es jedoch Probleme, da externe Befehle verwendet werden, die von der externen Umgebung abhängen und die Feinsteuerung schwierig ist.

Daher werde ich dieses Mal eine Bibliothek für die Überwachung von Leben und Tod per Socket einführen, damit sie in Python vervollständigt werden kann.

Überwachung von Leben und Tod mit Pings

pings ist eine Bibliothek zum Senden von Pings in Python. Wie oben erwähnt, kann das für den Ping verwendete ICMP-Paket über den Socket ohne Verwendung des Unterprozessbefehls gesendet werden.

** Hinweis **: Pings müssen als Root- / Admin-Benutzer ausgeführt werden.

Installation

Es kann über Pip installiert werden.

pip install pings

Wie benutzt man

Wenn Sie den aktiven Zustand des Ziels überwachen möchten, gehen Sie wie folgt vor. * Stellen Sie sicher, dass Sie es bei der Ausführung als ** Root-Benutzer / Administrator-Benutzer ** ausführen.

--Initialisieren Sie das Ping-Objekt

Im Einzelnen sieht der Code folgendermaßen aus:

.python


import pings

p = pings.Ping() #Ping-Objekterstellung
res = p.ping("google.com")  #Google überwachen

if res.is_reached():
  #Ich konnte mich mit dem Überwachungsziel verbinden
  do_something()
else:
  #Es konnte keine Verbindung zum überwachten Ziel hergestellt werden
  do_something()

Sie können das als Rückgabewert der Ping-Methode erhaltene Antwortobjekt verwenden, um den Netzwerkstatus zu überwachen.

res = p.ping("google.com")
res.print_messages()  #Nachricht wird angezeigt

Beispiel für das Ausführungsergebnis:

PING google.com (172.217.27.174): 55 data bytes
47 bytes from 172.217.27.174: icmp_seq=0 ttl=49 time=32.333 ms
--- google.com ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max = 32.333/32.333/32.333 ms

Feinere Einstellungen

Ich möchte das Leben und den Tod mehrerer Ziele überwachen

Gehen Sie wie folgt vor, um die Lebendigkeit mehrerer Computer zu überwachen.

.python


import pings

#IP-Adresse des lebendigen Überwachungsgeräts
hosts = ["192.168.0.1", "192.168.0.2", "192.168.0.3"]

p = pings.Ping()

#Extrahieren Sie die IP-Adressen der Computer nacheinander und führen Sie den Befehl ping aus
for h in hosts:
  res = p.ping(h)
  if not res.is_reached():
    #Was tun, wenn Sie keine Verbindung herstellen können?
    do_something()

Ich möchte Ping mehrmals überspringen

Mit den Standardeinstellungen können Sie den Ping nur einmal überspringen. Verwenden Sie daher die Option "Zeiten", wenn Sie mehrere Male senden möchten.

.python


import pings

p = pings.Ping()
res = p.ping("google.com", times=3)  #Google überwachen,3-mal Ping überspringen
res.print_messages()

Beispiel für das Ausführungsergebnis:

PING google.com (172.217.27.174): 55 data bytes
47 bytes from 172.217.27.174: icmp_seq=0 ttl=49 time=32.333 ms
--- google.com ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max = 32.333/32.333/32.333 ms

Ich möchte das Ergebnis in die Standardausgabe ausgeben

Wenn Sie beim Initialisieren der Ping-Klasse die Option "quiet" auf "False" setzen, wird das Ping-Ergebnis während der Ausführung in der Standardausgabe angezeigt.

.python


import pings

p = pings.Ping(quiet=False)
res = p.ping("google.com")  #Google überwachen

Beispiel für das Ausführungsergebnis:

PING google.com (172.217.27.174): 55 data bytes
47 bytes from 172.217.27.174: icmp_seq=0 ttl=49 time=32.333 ms
--- google.com ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max = 32.333/32.333/32.333 ms

abschließend

Aufgrund unzureichender Tests können Probleme auftreten, z. B. dass sie in einigen Umgebungen nicht oder nicht richtig funktionieren. Wenn Sie es verwenden möchten, beachten Sie es bitte, bevor Sie es verwenden.

Wenn Sie Probleme oder Kommentare haben, schreiben Sie diese bitte in den Kommentaren oder in der Ausgabe auf Github.

Referenz

http://edo.blog.jp/archives/1790336.html

Recommended Posts

Eine Bibliothek, die Leben und Tod anderer Maschinen durch Ping von Python aus überwacht
Aus einem Buch, das die Denkweise des Programmierers interessanterweise gelernt hat (Python)
Berücksichtigung der Stärken und Schwächen von Python
[Python] Ein Programm, das die Anzahl der Aktualisierungen der höchsten und niedrigsten Datensätze berechnet
[Python] Ein Programm, das die Anzahl der Täler zählt
Python zeigt aus der Perspektive eines C-Sprachprogrammierers
[Python] Ein Programm, das die Positionen von Kängurus vergleicht.
Ein Python-Skript, das die Anzahl der Jobs für eine bestimmte Bedingung von Indeed.com abruft
Eine Python-Client-App, die Dateien aus S3 herunterlädt und löscht, indem ein Bucket angegeben wird
[Python] Darstellung der Anzahl der Beschwerden von Lebensversicherungsunternehmen in einem Balkendiagramm
Anders als der Importtyp von Python. Bedeutung von aus A Import B.
Ein Beispiel für einen Mechanismus, der eine Vorhersage von HTTP aus dem Ergebnis des maschinellen Lernens zurückgibt
Python: Erstellen Sie ein Wörterbuch aus einer Liste von Schlüsseln und Werten
Python-Skript, das den Status des Servers über den Browser überprüfen kann
Python-Skript, das den Inhalt zweier Verzeichnisse vergleicht
[Python] Ein Programm, um die Anzahl der Äpfel und Orangen zu ermitteln, die geerntet werden können
Ich habe einen Linienbot erstellt, der das Geschlecht und das Alter einer Person anhand des Bildes errät
[Python] Ein Programm, das jedes Element der Liste einzeln vergleicht und gewinnt oder verliert. Postleitzahl ()
Eine Formel, die einfach das Alter ab dem Geburtsdatum berechnet
Lesen Sie die Standardausgabe eines Unterprozesses zeilenweise in Python
Aus einem Buch, das der Programmierer lernen kann ... (Python): Finden Sie den häufigsten Wert
Aus einem Buch, das Programmierer lernen können ... (Python): Überprüfung von Arrays
[Python] Ruft das Aktualisierungsdatum eines Nachrichtenartikels aus HTML ab
Eine Funktion, die die Verarbeitungszeit einer Methode in Python misst
Überprüfung der Theorie, dass "Python und Swift ziemlich ähnlich sind"
[Python] Ein Hinweis, dass ich das Verhalten von matplotlib.pyplot zu verstehen begann
Die Geschichte, ein Modul zu erstellen, das E-Mails mit Python überspringt
[Python] Ein Programm, das den Inhalt der Liste nach links dreht
Die Geschichte von Python und die Geschichte von NaN
Existenz aus Sicht von Python
Dies und das von Python-Eigenschaften
Richten Sie mit Python einen Dummy-SMTP-Server ein und überprüfen Sie den Sendevorgang von Action Mailer
[Python] Ich habe das Tagebuch eines Mannes im ersten Jahr des Arbeitslebens analysiert und das Arbeitsleben positiv / negativ beurteilt.
Erweiterung von Python um C oder C ++ (wenn es mehrere Argumente gibt, wenn eine Liste von der Python-Seite übergeben wird)
Berechnen Sie die kürzeste Route eines Diagramms mit der Dyxtra-Methode und Python
[Python] Ein Programm, das die Anzahl der gepaarten Socken berechnet
Extrahieren Sie mit Python Zeilen, die den Bedingungen entsprechen, aus einer Textdatei
Der Aufzählungstyp, der aus Python 3.4 in die Standardbibliothek eingeht, ist weiterhin praktisch
Ich habe versucht, die Beschleunigung von Python durch Cython zu verifizieren und zu analysieren
Ein Hinweis zu den Funktionen der Standard-Linux-Bibliothek, die sich mit Zeit befasst
Den Namen der Methode, die ihn aufgerufen hat, finden Sie in der Python-Methode
Code lesen von faker, einer Bibliothek, die Testdaten in Python generiert
[Python] Hinweis: Selbst erstellte Funktion zum Ermitteln des Bereichs der Normalverteilung
Dies und das der Einschlussnotation.
Notizen vom Anfang von Python 1 lernen
Verbinde viel Python oder und und
Artikel, der eine Person sein kann, die den Mechanismus der API versteht und beherrscht (mit Python-Code)
[Python] [Meta] Ist der Python-Typ ein Typ?
Pandas des Anfängers, vom Anfänger, für den Anfänger [Python]
[Python] Eine Funktion, die die Breite ausrichtet, indem ein Leerzeichen in Text eingefügt wird, das eine Mischung aus voller und halber Breite ist
Die Geschichte der Verarbeitung A von Blackjack (Python)
Notizen vom Anfang von Python 2 lernen
[Python] Ein Programm, das die Partitur rundet
Verwenden Sie Ruby und Python, um die Wahrscheinlichkeit zu ermitteln, dass eine Karte mit einer natürlichen Zahl von 1 bis 100 ein Vielfaches von 3 und kein Vielfaches von 5 ist.
Stellen Sie die von Eigen of C ++ erstellte Bibliothek mit Boost.Numpy in Python zur Verfügung.
Die Geschichte einer Box, die Peppers AL Memory und MQTT miteinander verbindet
Python - Lesen Sie Daten aus einer numerischen Datendatei und suchen Sie die multiple Regressionslinie.
Python-Skript, das SQL-Dateien liest, BigQuery ausführt und CSV speichert