Ping mit Timestamp protokollieren (VBS)
Überwacht man über einen längeren Zeitraum per Ping die Netwerkverbindung, um evtl. auftretende Störungen prokollieren, ist es für die spätere Auswertung i.d.R. hilfreich, wenn die Ping-Pakete inkl. Zeitstempel in der Log-Datei enthalten sind. Das kann bspw. mit dem Skript PingLogger.vbs geschehen…
Es kann über Parameter – ähnlich dem Windows-Tool Ping.exe
– beim Aufruf gesteuert werden. Zusätzlich können der Zeitabstand zwischen den einzelnen Pings und natürlich Pfad+Dateiname einer Log-Datei angegeben werden. Alle Parameter, außer dem Parameter Host, sind optional; werden diese nicht gesetzt, nutzt das Skript die angegebenen Default-Werte:
Parameter | Beschreibung | Default |
-h <Host> | Zu pingende(r) Host/IP-Adresse | |
-n <Count> | Anzahl der zu sendenden Pakete | ∞ (Abbruch mit [STRG] + C) |
-l <Bytes> | Größe der Pakete | 32 |
-i <TTL> | Time to Live | 128 |
-o <LogFile> | Pfad und Dateiname der Ausgabe-Datei | – (keine Log-Datei) |
-d <Delay> | Verzögerung zwischen zu sendenden Paketen in ms | 1000 (1s) |
-t <Seconds> | Skriptlaufzeit in s | ∞ (Abbruch mit [STRG] + C) |
-w <Timeout> | Timeout in ms „When specifying very small numbers for timeout, the Ping reply can be received even if timeout milliseconds have elapsed.“ – MSDN | 4000 (4s) |
-df | Flag Don’t Fragment für die Pakete setzen | nicht aktiv |
Der Aufruf des Skripts über die Eingabeaufforderung für 10 Pings an google.de mit 5 Sekunden Timeout in einem 60 Sekunden Intervall mit Protokollierung in D:\Ping_google.de.log, sähe wie folgt aus:
cscript.exe PingLogger.vbs -h google.de -n 10 -d 60000 -w 5000 -o D:\Ping_google.de.log
Entsprechend erhält man sowohl in der Bildschirmausgabe, als auch in der angegebenen Protokolldatei Informationen zu jedem Ping. Die Spalten sind Nummer des Pakets (Ping#), Uhrzeit (Timestamp), Größe in Bytes, Antwortzeit (RspTime), Gültigkeitsdauer (TTL) und die Statusmeldung. Bei Nutzung des Parameters -n, wird nach Abschluß noch die durchschnittliche Anwortzeit und die Anzahl der verlorenen Pakete ermittelt.
Download
- Download: Skript PingLogger.vbs (ZIP) – Letzte Aktualisierung: 08.12.2014
26. April 2012 um 13:58 Uhr - -
tolles „Programm“ – ehrlich.
genau das hab ich gesucht.
ich kenne mich mit VB nicht so aus, aber wie kann ich über die 32000 Aufrufe kommen (integer).
1 Tag, alle Sekunde…
Könnte man als Parameter eintragen, dass dieses Programm (eher script ?) max eine gewisse Zeitspanne läuft ? zM 23:59 Stunden ?
26. April 2012 um 19:11 Uhr - -
Hallo Bernd,
danke für das Lob. 🙂
Ich habe das Skript kurz angepasst, so dass man über den Parameter -n nun bis zu 2.147.483.647 (Long) Ping-Pakete senden kann. (…ohne Angabe des Parameters -n beliebig viele.)
Um das Skript eine bestimmte Zeit laufen zu lassen, könntest Du versuchen es als geplanten Task zu starten, der sich nach der gewünschten Zeit automatisch beendet (Eigenschaften Geplanter Task -> Einstellungen -> „Task beenden nach:“…).
Nachtrag (23.08.2012): Die angesprochene Funktion wurde nun mit der Option -t implementiert.
13. Mai 2013 um 10:40 Uhr - -
Super Skript, genau was ich schon sehr lange gesucht habe.
Zur Pefektion fehlt mir noch das Datum neben der Zeit in dem Logfile 🙂
Ist das möglich?
Gruß
Schmidt
13. Mai 2013 um 13:05 Uhr - -
Hallo,
Du müsstest dazu nur der Logausgabe (Zeile 230) an der gewünschten Stelle die Funktion Date() hinzufügen. Z.B. so:
Soll das Datum auch in der Bildschirmausgabe erscheinen, dann müsste Zeile 227 auch noch entsprechend angepasst werden.
MfG
3. November 2014 um 11:06 Uhr - -
Hallo,
gibt es die Möglichkei die Bildschirmausgabe zu verhindern?
Ich muss zZ jeden Ping mit OK bestätigen, bevor er in die Logdatei geschrieben wird.
MfG
3. November 2014 um 13:02 Uhr - -
Hört sich so an, als würdest Du das Skript mit
wscript.exe
ausführen; wenn es mitcscript.exe
geöffnet wird (wie oben beschrieben), dürfte das nicht passieren.(Alternativ könnte man auch Zeile 227 auskommentieren…)
MfG
26. November 2014 um 14:41 Uhr - -
Hi Dennis,
richtig cooles Script, danke!
Ich wollte es noch erweitern, dass es mir einen Alert (messagebox) rausgibt, wenn der Host nicht erreichbar ist. Ich starte dazu das .vbs einfach im Hintergrunde und habe unter
Case 11003
strStatus = „Destination Host Unreachable“
die Zeile
MsgBox „Host nicht erreichbar abgebrochen“,0,“Ping Alert“
hinzugefügt. Leider kommt aber sehr oft die Timeout-Meldung, anstatt der Case 11003. Wenn ich die Zeile jetzt noch unter den Errorcode 11010 (Request Timed Out) klappt es prinzipiell, allerdings ist der TimeOut ein wenig zu klein, da der Host manchmal 1000ms Antwortzeit und mehr hat. Kann man den TimeOut irgendwo noch manuell hochsetzen und/oder definieren, wann der Errorcode 11003 kommt?
Danke und viele Grüße,
Tobi
8. Dezember 2014 um 22:34 Uhr - -
Hallo,
bin erst jetzt dazu gekommen es anzupassen; mit der neuen Version kann der Timeout in ms über den Parameter
-w
gesetzt werden.MfG