Mitunter muss oder möchte man über einen längeren Zeitpunkt mittels Ping die Verbindung zu einem anderem Netz oder Computer prüfen. Das kann man zwar einfach mittels
ping <IP oder Host> -t
realisieren, möchte man allerdings nur die Fehler protokollieren, kann das mittels eines Skripts erledigt werden.
Anbei das Listing:
@echo off cls echo. echo Ping-Test wird ausgefuehrt ... echo. rem Konfiguration set ip= rem Protokoll erstellen echo Ziel-IP-Adresse: %ip% > Report.txt echo. >> Report.txt echo Startzeitpunkt: %date% - %time% >> Report.txt echo. >> Report.txt :schleife ping %ip% -n 1 -w 1000 | find "TTL" > nul rem errorlevel==0 Ok rem errorlevel==1 Fehler if %errorlevel%==1 echo %date% - %time% - Error >> Report.txt timeout /t 1 /nobreak > nul goto schleife
In Zeile 11 muss die IP-Adresse oder der Hostname des Ziels eingetragen werden. Das Skript ansich läuft in Dauerschleife und protokolliert neben dem Startzeitpunkt und dem Ziel nur die Fehler mit Zeitstempel. Jede Sekunde wird ein Ping abgesetzt. Abgebrochen wird das Skript durch “Strg+c”.
Tipp: Möchte man das Fehler-Protokoll live beobachten, kann WinTail verwendet werden.
Update 20.03.2018
Das Skript um ” | find “TTL” erweitert, siehe dazu:
Windows: Der Ping-Rückgabewert ist mitunter auch bei Nichterreichbarkeit 0
Update 01.02.2019
Kleiner Tipp am Rande: Man kann das Ganze einfach umdrehen, soll heißen: Statt das Fehler protokolliert werden, die Erreichbarkeit erfassen. Hilfreich ist das um z.B. zu sehen, ab wann ein gestörter Internetanschluss wieder verfügbar oder ein System nach einem Neustart wieder erreichbar ist. Man muss lediglich die Zeile
if %errorlevel%==1 echo %date% - %time% - Error >> Report.txt
auskommentieren (“rem” voran stellen) und folgende Zeile einfügen:
if %errorlevel%==0 echo %date% - %time% - Online >> Report.txt
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.
Das Problem ist jetzt allerdings, dass mit der Erweiterung vom 20.03.2018 der Rückgabewert (%ErrorLevel%) des Befehlt “find” statt des pings ausgewertet wird – und der ist, wenn das Stichwort “TTL” eben NICHT in der Ping-Ausgabe auftaucht, 0, was vom Skript als Ping-Fehler interpretiert wird, es aber nicht ist.
Also besser vielleicht die Ausgabe in einer Variablen merken und lieber später, bei VERMEINDLICHEM Fehl-Alarm (Ping-ErrorLevel = 0) auswerten?
Ich habe für mich die TTL-Sache einfach mal ausgeblendet und kann mit Ihrem Skript nun prüfen, ob meine PowerLine-LAN-Verbindung stabil ist. DANKE! 🙂
Das stimmt so nicht, “find” gibt “0” zurück, wenn der Suchbegriff gefunden wird, wird er nicht gefunden wird eine “1” zurückgegeben. Das kann man ganz einfach selbst prüfen, z.B.:
C:Usersaweber>ping 192.168.0.1 | find "TTL"
Antwort von 192.168.0.1: Bytes=32 Zeit=1ms TTL=64
Antwort von 192.168.0.1: Bytes=32 Zeit=3ms TTL=64
Antwort von 192.168.0.1: Bytes=32 Zeit=1ms TTL=64
Antwort von 192.168.0.1: Bytes=32 Zeit=1ms TTL=64
C:Usersaweber>echo %errorlevel%
0
C:Usersaweber>ping 192.168.22.1 | find "TTL"
C:Usersaweber>echo %errorlevel%
1
Pingt man erst eine IP-Adresse an, die es gibt, wird eine “0” zurückgegeben, pingt man dann eine IP-Adresse an, die es nicht gibt, kommt eine “1”.
Kurze Frage:
Ich würde mein Netzwerk gerne über einen Raspberry Pi mit Linux (sagen wir Ubuntu) überwachen lassen und dabei oben genanntes Skript zweimal (also für 2 IP-Adressen mit je eigenem Protokoll) zum Einsatz bringen.
Einmal für eine interne IP-Adresse und einmal für extern, da ich wissen will ob und wie häufig bei uns das DSL abbricht und ob dies die Fritzbox ggf. sogar teils lahm legt (beides im Verdacht).
Wie müsste man das Skript umschreiben, dass es via Linux funktionieren würde?
Unter Linux soll es zwar zig andere Tools geben, doch alle recht umständlich. Jedoch wäre es mir, um ehrlich zu sein, auch ein wenig zu teuer und umständlich einen extra Windows-Rechner hinzustellen.
Hallo Dominic,
> Wie müsste man das Skript umschreiben, dass es via Linux funktionieren würde?
Das Skript muss Linux-spezifisch neu geschrieben werden. Da bin ich allerdings nicht firm drin.