Gibt es in Python eine Möglichkeit, einen Server über ICMP anzupingen und TRUE zurückzugeben, wenn der Server antwortet, oder FALSE, wenn es keine Antwort gibt?
Wenn Sie Windows nicht unterstützen müssen, finden Sie hier eine sehr übersichtliche Lösung:
import os
hostname = "google.com" #example
response = os.system("ping -c 1 " + hostname)
#and then check the response...
if response == 0:
print hostname, 'is up!'
else:
print hostname, 'is down!'
Das funktioniert, weil ping einen Wert ungleich Null zurückgibt, wenn die Verbindung fehlschlägt. (Der Rückgabewert ist je nach Netzwerkfehler unterschiedlich.) Sie können auch die Ping-Zeitüberschreitung (in Sekunden) mit der Option '-t' ändern. Beachten Sie, dass dies eine Textausgabe auf der Konsole zur Folge hat.
1 #!/usr/bin/python
2
3 import os
4 import sys
5 import time
6
7 os.system("clear")
8 home_network = "172.16.23."
9 mine = []
10
11 for i in range(1, 256):
12 z = home_network + str(i)
13 result = os.system("ping -c 1 "+ str(z))
14 os.system("clear")
15 if result == 0:
16 mine.append(z)
17
18 for j in mine:
19 print "host ", j ," is up"
Ein einfaches, das ich gerade in einer Minute zusammengebastelt habe... icmplib braucht root-Rechte, das untenstehende funktioniert ziemlich gut! HTH