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.
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.
Es kann über Pip installiert werden.
pip install pings
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
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()
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
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
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.
http://edo.blog.jp/archives/1790336.html
Recommended Posts