crazyhoesl
Goto Top

Ping mit Zeitstempel ausgeben

Hallo alle miteinander,

ich möchte folgendes realisieren, und selbst komme ich nicht weiter. Ein normaler Ping schaut ja ca. so aus:

Antwort von 192.168.222.1: Bytes=32 Zeit=1ms TTL=128
Antwort von 192.168.222.1: Bytes=32 Zeit=1ms TTL=128
Antwort von 192.168.222.1: Bytes=32 Zeit<1ms TTL=128
Antwort von 192.168.222.1: Bytes=32 Zeit<1ms TTL=128

Ich möchte eine Batch-Datei schreiben die mir den Ping als Log-File ausgibt, und das 12 Stunden lang dauerping, im endeffekt sollte das dann so aussehen:

12:11:03 Antwort von 192.168.222.1: Bytes=32 Zeit=1ms TTL=128
12:11:13 Antwort von 192.168.222.1: Bytes=32 Zeit=1ms TTL=128
12:11:23 Antwort von 192.168.222.1: Bytes=32 Zeit<1ms TTL=128
12:11:33 Antwort von 192.168.222.1: Bytes=32 Zeit<1ms TTL=128
12:11:43 Antwort von 192.168.222.1: Bytes=32 Zeit=1ms TTL=128
12:11:53 Antwort von 192.168.222.1: Bytes=32 Zeit=1ms TTL=128
12:12:03 Antwort von 192.168.222.1: Bytes=32 Zeit<1ms TTL=128
12:12:13 Antwort von 192.168.222.1: Bytes=32 Zeit<1ms TTL=128
12:12:23 Antwort von 192.168.222.1: Bytes=32 Zeit=1ms TTL=128
12:12:33 Antwort von 192.168.222.1: Bytes=32 Zeit<1ms TTL=128
12:12:33 Antwort von 192.168.222.1: Bytes=32 Zeit<1ms TTL=128

usw.... Ist soetwas möglich???

Vielen Dank!

Content-Key: 59814

Url: https://administrator.de/contentid/59814

Printed on: April 24, 2024 at 18:04 o'clock

Member: aqui
aqui May 25, 2007 at 10:41:27 (UTC)
Goto Top
Ja und du benötigst nichtmal ein Script face-wink

http://www.cfos.de/ping/ping.htm

löst dein Problem sofort mit der Option -T face-wink
Member: Biber
Biber May 26, 2007 at 09:51:47 (UTC)
Goto Top
Moin crazyhoesl,

nicht, dass mich vor einer Antwort drücken wollte, aber...

WTF macht das für einen Sinn???
Wenn Du Dir aus der gewünschten Logdatei eine Statistik erzeugen willst, dann schau Dir bitte vorher an, ob nicht ein "ping -t" dasselbe Ergebnis liefert könnte.
Den mitgelieferten M$-Ping kannst Du auch mit STRG-UNTBR abbrechen und bekommst dann eine Statistik angezeigt.

Was ist denn Dein Ziel (nachdem die Logdatei da ist)?

Gruß
Biber
Member: crazyhoesl
crazyhoesl May 30, 2007 at 06:29:34 (UTC)
Goto Top
Ich möchte auf einem Server mal einen Tag lang die Ping-Zeiten auf einen anderen Server messen. Das das mit ping -t funktioniert ist mir klar, allerdings möchte ich nicht 1 Tag lang davor sitzten und dem Ping-Pong zusehen, sondern mir am Tag danach mir das Ergebnis durch ein Logfile ansehen. Das Problem ist nur das mir z.b. "ping -t>C:\logdatei.log" keinen Zeitstempel zu jedem ping mitliefert.

Ich hab das jetzt mal so ungefähr so gelöst: (kein komplettes Script!)

:loop
ping %pingadresse% -n 1 > C:\temp.log

@echo %date%, %time% >> C:\logdatei.log

type C:\temp.log|find /i "Antwort" >> C:\logdatei.log

del C:\temp.log
goto loop

ist nicht besonders hübsch wegen der temp - datei... Und am besten sollte man noch einen sleep befehl reinsetzten, sonst arbeitet der server bisschen arg viel face-wink

leider bekomm ich damit Zeitstempel und Ping-Antwort nicht in eine Zeile, aber im Grunde hat es seinen Zweck erfüllt.

Vielen Dank an aqui, das Prog ist net schlecht, aber mir gefiel irgendwie die Ping-Ausgabe nicht so wirklich face-wink

Vielen Dank,

crazyhoesl
Member: Biber
Biber May 30, 2007 at 13:57:38 (UTC)
Goto Top
Moin cratyhoesl,

dann mach da nicht so viel Heckmeck drum.

Vorlage vom CMD-Prompt:
(=15:51:32  D:\temp=)
>for /l %a in (0) do @for /f "Tokens= 3,*" %i in ('ping -n 1 localhost^|find "Antwort"') do @echo !Time! %j  
15:51:49,90 Bytes=32 Zeit=18ms TTL=128
15:51:50,02 Bytes=32 Zeit<1ms TTL=128
15:51:50,13 Bytes=32 Zeit<1ms TTL=128
15:51:50,24 Bytes=32 Zeit<1ms TTL=128
15:51:50,35 Bytes=32 Zeit<1ms TTL=128
15:51:50,46 Bytes=32 Zeit<1ms TTL=128
15:51:50,57 Bytes=32 Zeit<1ms TTL=128
15:51:50,68 Bytes=32 Zeit<1ms TTL=128
15:51:50,79 Bytes=32 Zeit<1ms TTL=128
15:51:50,89 Bytes=32 Zeit<1ms TTL=128
15:51:51,00 Bytes=32 Zeit<1ms TTL=128
15:51:51,11 Bytes=32 Zeit<1ms TTL=128
15:51:51,22 Bytes=32 Zeit<1ms TTL=128
15:51:51,33 Bytes=32 Zeit<1ms TTL=128

(=15:51:51  D:\temp=)

Wenn denn ein Batch sein soll:
::---------snipp DauerPing.bat
@Echo off & Setlocal EnableDelayedExpansion
for /l %%a in (0) do @for /f "Tokens= 3,*" %%i in ('ping -n 1 localhost^|find "Antwort"') do @echo !Time! %%j  

.. und wenn der immer alles umleiten soll, dann noch ein >>\whereever\Ping_%date%.Log anhängen.

Gruß
Biber
Member: crazyhoesl
crazyhoesl May 30, 2007 at 14:05:14 (UTC)
Goto Top
äähh. ja.

So ziemlich genau das soll es sein. Schade das ich überhaupt keinen Plan hab was hinter diesem Befehl so wirklich steckt...

Trotzdem allerherzlichsten und besten Dank! Das ist absolut perfekt.
Mit Vista wirds noch perfekter angezeit:

16:03:56.16 Zeit<1ms

ohne Bytes und TimeToLive
Member: Biber
Biber May 30, 2007 at 14:15:58 (UTC)
Goto Top
Moin crazyhoesl,

Das soll kein Vi$ta-Feature bleiben..
>for /l %a in (0) do @for /f "Tokens=5" %i in ('ping -n 1 localhost^|find "Antwort"') do @echo !Time! %i  
16:07:34,78 Zeit<1ms
16:07:34,89 Zeit<1ms
16:07:35,00 Zeit<1ms
16:07:35,11 Zeit<1ms
16:07:35,23 Zeit<1ms
16:07:35,34 Zeit<1ms
16:07:35,45 Zeit<1ms
..

oder als Batch entsprechend:
@Echo off & setlocal EnableDelayedExpansion
for /L %%a in (0) do for /f "Tokens=5" %i in ('ping -n 1 localhost^|find "Antwort"') do echo !Time! %%i  

oder lesbarer
@Echo off & setlocal EnableDelayedExpansion
for /L %%a in (0) do (
        for /f "Tokens=5" %i in ('ping -n 1 localhost^|find "Antwort"') do echo !Time! %%i   
)

Das "For /L %%a in (0) Do" ist ein so genanntes Biber-Special und bedeutet so viel wie "DO WHILE TRUE/ Mache endlos".
Den Rest musst Du von innen nach außen lesen und ggf. einzeln vorher ausprobieren am CMD-Prompt.

Eine einzelne Anweisung: 'ping -n 1 localhost^|find "Antwort"' kannst Du an Prompt testen als ping -n 1 localhost|find "Antwort"
Die FOR /F-Anweisung davor filtert dann das 5. Token, die "<1ms" heraus.
Und mit !Time! hole ich die jeweils aktuelle Zeit (%time%) auf den Schirm.

Thats all. Isset gelöst für Dich?

Grüße
Biber
Member: crazyhoesl
crazyhoesl May 30, 2007 at 14:21:30 (UTC)
Goto Top
AH, verstehe...

also zumindest von der Logik her.. selbst würd ich das noch nicht zusammenbasteln können, aber man ist ja schließlich noch jung face-wink

Nochmals vielen Dank
Member: Biber
Biber May 30, 2007 at 14:47:03 (UTC)
Goto Top
aber man ist ja schließlich noch jung
Na ja... als ich in Deinem Alter war, haben meine Bätche schon die ersten Fernsehsatelliten gesteuert... <grinz>

Nein, Spaß beiseite... es ist auch bei mir mehr Übungssache und sicher keine Genialität.
Also normale Transpiration statt Inspiration.

Ich schließe den Beitrag mal.
Schönen Feierabend.

Biber

[Edit] Noch ein Nachtrag:
Du kannst natürlich auch ein "sleep" einbauen. Würde ich jedenfalls auch, genau wie Du oben schon geschrieben hast.

Demo am Prompt:
>for /l %a in (0) do @for /f "Tokens=5" %i in ('sleep 6 ^& ping -n 1 localhost^|find "Antwort"') do@echo !Time! %i  
16:51:13,07 Zeit<1ms
16:51:19,22 Zeit<1ms
16:51:25,33 Zeit<1ms
^C

[/Edit]