oldfellow hat geschrieben:Nun möchte ich zyklisch den Server anpingen, da die IP bzw. der Host-Name statisch sind.
Hallo oldfellow!
Es gibt immer einen irgendwie eleganteren Weg. Aber meist genügt es, wenn man von Python aus auf vorhandene Kommandozeilenprogramme, wie z.B. ping, zugreift und die Ausgabe auswertet.
Wenn du dir die Ausgaben von ping ansiehst, dann findest du sicher schnell raus, was bei einem erfolgreichen Ping anders ist als bei nicht erfolgreichen Pings.
Code: Alles auswählen
gps ~ # ping -c1 halvar.at
PING halvar.at (88.198.133.12) 56(84) bytes of data.
64 bytes from static.88-198-133-12.clients.your-server.de (88.198.133.12): icmp_seq=1 ttl=55 time=35.7 ms
--- halvar.at ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 35.771/35.771/35.771/0.000 ms
gps ~ # ping -c1 halvar.att
ping: unknown host halvar.att
gps ~ # ping -c1 www.tirol.com
PING www.tirol.com (194.232.15.221) 56(84) bytes of data.
--- www.tirol.com ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms
gps ~ #
Man könnte also im Ergebnis nach "1 received" suchen und weiß damit, ob der Ping OK war oder nicht.
Und so kannst du das in Python abfragen:
Code: Alles auswählen
#!/usr/bin/env python
import subprocess
args = ["/bin/ping", "-c1", "halvar.at"]
proc = subprocess.Popen(args, stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
retval = proc.stdout.read()
if "1 received" in retval:
print "Verbunden"
else:
print "Nicht verbunden"
mfg
Gerold