Da kann man Fehler suchen: Ping kann man recht gut verwenden, um die Erreichbarkeit von entfernten Computern zu prüfen. Möchte man dies in einem Skript tun und wertet dabei den Rückgabewert (aka Errorlevel) aus, kann man dabei zu unerwarteten Ergebnissen kommen.
Es könnte so einfach sein:
ping <hostname/ip> if %errorlevel%==0 machirgendwas bzw. if %errorlevel%==1 machirgendwasanderes
Erwarten würde man, das eine “0” dabei herauskommt, wenn das Ziel erreichbar ist und eine “1” wenn der Ping nicht erfolgreich war. Allerdings kommt mitunter auch eine “0” dabei raus, wenn es keine Antwort gibt bzw. der eigene PC vermeldet, dass das Ziel nicht erreichbar sei. Die genauen Hintergründe und Ursachen für die aus meiner Sicht nicht immer richtige “0” habe ich nicht weiter untersucht.
Als kleine Abhilfe kann man die Ausgabe von “Ping” durch “Find” auf das Vorhandensein eines Schlüsselworts prüfen und den Rückgabewert von “Find” auswerten:
ping <hostname/ip> | find "TTL" if %errorlevel%==0 machirgendwas bzw. if %errorlevel%==1 machirgendwasanderes
TTL (Time to Live) gibt es nur, wenn wirklich eine Antwort vom Ziel gekommen ist:
C:\Users\andy>ping 192.168.0.1 Ping wird ausgeführt für 192.168.0.1 mit 32 Bytes Daten: Antwort von 192.168.0.1: Bytes=32 Zeit=4ms TTL=64 Antwort von 192.168.0.1: Bytes=32 Zeit=2ms TTL=64 Antwort von 192.168.0.1: Bytes=32 Zeit=2ms TTL=64 Antwort von 192.168.0.1: Bytes=32 Zeit=2ms TTL=64 Ping-Statistik für 192.168.0.1: Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0 (0% Verlust), Ca. Zeitangaben in Millisek.: Minimum = 2ms, Maximum = 4ms, Mittelwert = 2ms
Folglich ist der Rückgabewert von “Find” eine “0”. Wird “TTL” nicht gefunden, lautet der Wert “1”.
Verheiratet, Vater von zwei Kindern, eines an der Hand, eines im Herzen. Schon immer Technik-Freund, seit 2001 in der IT tätig und seit über 10 Jahren begeisterter Blogger. Mit meiner Firma IT-Service Weber kümmern wir uns um alle IT-Belange von gewerblichen Kunden und unterstützen zusätzlich sowohl Partner als auch Kollegen.
0 Kommentare
1 Pingback