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:

ParameterBeschreibungDefault
-h <Host>Zu pingende(r) Host/IP-Adresse
-n <Count>Anzahl der zu sendenden Pakete∞ (Abbruch mit [STRG] + C)
-l <Bytes>Größe der Pakete32
-i <TTL>Time to Live128
-o <LogFile>Pfad und Dateiname der Ausgabe-Datei– (keine Log-Datei)
-d <Delay>Verzögerung zwischen zu sendenden Paketen in ms1000 (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)
-dfFlag Don’t Fragment für die Pakete setzennicht 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.

PingLogger: Logausgabe (Bildschirm) mit Ping-Nummer(Ping#), Uhrzeit (Timestamp), Größe in Bytes, Antwortzeit (RspTime), Time To Live (TTL) und Statusmeldung

Download

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne
(4 Bewertungen, ⌀: 5,00 / 5)
Loading...

8 Kommentare

  1. Bernd Krüger

    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 ?

    • Dennis Bistron

      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.

  2. Schmidt

    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

    • Dennis Bistron

      Hallo,

      Du müsstest dazu nur der Logausgabe (Zeile 230) an der gewünschten Stelle die Funktion Date() hinzufügen. Z.B. so:

      appendFile  strLog, lngLoop &amp; vbTab &amp; Date() &amp; &quot; &quot; &amp; Time() &amp; vbTab [...]

      Soll das Datum auch in der Bildschirmausgabe erscheinen, dann müsste Zeile 227 auch noch entsprechend angepasst werden.

      MfG

  3. Christoph Kutz

    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

    • Dennis Bistron

      Hört sich so an, als würdest Du das Skript mit wscript.exe ausführen; wenn es mit cscript.exe geöffnet wird (wie oben beschrieben), dürfte das nicht passieren.
      (Alternativ könnte man auch Zeile 227 auskommentieren…)
      MfG

  4. Tobi

    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

Kommentar verfassen

Neue Beiträge Oft gelesene BeiträgeNeueste KommentareBlog abonnieren

Gib Deine E-Mail-Adresse an, um diesen Blog zu abonnieren und Benachrichtigungen über neue Beiträge via E-Mail zu erhalten.