moelle
Goto Top

Batch Datei mit Ping datum uhrzeit in einer Zeile als Logfile

Hallo ich habe die Suche bemüht aber nicht wirklich eine Lösung für mich gefunden

Ich brauche eine Batch Datei die ein Logfile erstellt indem ich dem Ping Befehl mit aktuellen und Uhrzeit bekomme in einer Zeile.

Beispiel soll so aussehen.

Ping wird ausgefhrt fr 192.168.170.210 mit 32 Bytes Daten:
Antwort von 192.168.170.210: Bytes=32 Zeit=4ms TTL=64 08.04.2009 16:11
Antwort von 192.168.170.210: Bytes=32 Zeit=4ms TTL=64 08.04.2009 16:11
Antwort von 192.168.170.210: Bytes=32 Zeit=4ms TTL=64 08.04.2009 16:11

Batchbefehl nur mit Ergebnis Ping habe ich schon nur Datum und Uhrzeit fehlt.


Bitte schnellstens um Hilfe!

Vielen Dank
Kommentar vom Moderator Biber am 19.05.2010 um 20:37:37 Uhr
Verschoben von "Entwicklung" nach "Batch & Shell".

Content-ID: 113525

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

Ausgedruckt am: 25.11.2024 um 13:11 Uhr

bubifix
bubifix 08.04.2009, aktualisiert am 18.10.2012 um 18:37:57 Uhr
Goto Top
Hallo Moelle,

vielleicht hilft Dir Dieser Beitrag weiter: Pingauswertung in Excel für ca 240 IP-adressen

Gruß

bubifix

[Edit Biber] Link auf Permanent-Link geändert - funktionierte so nicht]
Moelle
Moelle 08.04.2009 um 16:28:55 Uhr
Goto Top
Auf die schnelle nicht wirklich.

Bisher sieht es bei mir in meiner batch so aus.

C:\Users\Desktop\log.txt
@echo off

ping 192.168.170.210 -t >> log.txt

anzeige im log.txt dann
Ping wird ausgefhrt fr 192.168.170.210 mit 32 Bytes Daten:
Antwort von 192.168.170.210: Bytes=32 Zeit=4ms TTL=64
v-m-r-de
v-m-r-de 08.04.2009 um 16:51:43 Uhr
Goto Top
Hi!

Die Lösung von bubifix w.äe aber schöner...
aber wenn es schnell gehen muss... dann probier doch einfach mal:

:Start
echo %date%-%time% >>c:\log.txt
echo off
ping 192.168.170.210 -n 1 >>c:\log.txt
goto Start

Gruß,
Volker
Moelle
Moelle 08.04.2009 um 16:58:58 Uhr
Goto Top
Hallo Volker, das funktioniert ist sogar besser als meine neue Lösung,
jetzt wäre es nur noch schön wenn er alle 5 Minuten die Daten ins Logfile schreibt, was muss dann anstatt der 1 rein

das ist meine Lösung

C:\logfile.txt
@echo off

:start
time /t >> logfile.txt
ping -n 1 192.168.170.210 >> logfile.txt
goto start
v-m-r-de
v-m-r-de 08.04.2009 um 17:04:12 Uhr
Goto Top
Hi,

dann muss folgendes in die Batch:

echo %date%-%time% >>c:\log.txt
echo off
ping 192.168.170.210 -n 1 >>c:\log.txt


Dann machst du einen geplanten Task, der alle 5 Min die Batch aufruft und fertig.

Gruß,
Volker
Moelle
Moelle 08.04.2009 um 17:10:32 Uhr
Goto Top
Ich möchte ohne geplanten Task arbeiten
was ist denn wenn

echo %date%-%time% >>c:\log.txt
echo off
ping 192.168.170.210 -w 3000>>c:\log.txt

Wäre das nicht alle 5 Minuten
v-m-r-de
v-m-r-de 08.04.2009 um 17:37:41 Uhr
Goto Top
Ok,

dann sollte es so gehen:

:Start
echo %date%-%time% >>c:\log.txt
echo off
ping 192.168.170.210 -n 1 -w 3000 >>c:\log.txt
goto Start

Gruß,
Volker
bastla
bastla 08.04.2009 um 17:39:22 Uhr
Goto Top
Hallo Moelle und v-m-r-de!

Die "sleep.exe" aus den Windows Server 2003 Resource Kit Tools eignet sich für solche Zwecke (Zeitspannen) besser ...

Grüße
bastla
ItSysElo6
ItSysElo6 05.01.2010 um 22:01:31 Uhr
Goto Top
Hi!

Habe mal eure vorschläge ausprobiert.

Jedoch funktioniert das bei mir mit dem Ping befehl net... face-sad

In meiner TXT steht dann nur:

c:\blablabla> Ping xxx.xxx.xxx.xxx 1>>ping.txt

Und das immer und immer wieder.

face-sad

Woran kann das liegen?
neueradmuser
neueradmuser 19.05.2010 um 13:31:46 Uhr
Goto Top
hi,
muß die ausgabe von folgender batch in eine *.txt datei
eigentlich immer so aussehen oder kann man das abändern?
nett wäre es in etwa so, also das muß enthalten sein und nicht so nen 10 zeiler für eine abfrage:
ziel-ip - datum - uhrzeit - erfolg ja oder nein
batch:
:start
echo %date%-%time% >>\\pingtest.txt
echo off
ping -n 1 4.2.2.2 >>\\pingtest.txt
goto start

pingtest.txt
Antwort von 4.2.2.2: Bytes=32 Zeit=47ms TTL=246


Ping-Statistik fr 4.2.2.2:
Pakete: Gesendet = 1, Empfangen = 1, Verloren = 0 (0% Verlust),
Ca. Zeitangaben in Millisek.:
Minimum = 47ms, Maximum = 47ms, Mittelwert = 47ms
19.05.2010-13:02:17,25

Ping wird ausgefhrt fr 4.2.2.2 mit 32 Bytes Daten:
Antwort von 4.2.2.2: Bytes=32 Zeit=47ms TTL=246

Ping-Statistik fr 4.2.2.2:
Pakete: Gesendet = 1, Empfangen = 1, Verloren = 0 (0% Verlust),
Ca. Zeitangaben in Millisek.:
Minimum = 47ms, Maximum = 47ms, Mittelwert = 47ms
19.05.2010-13:02:17,34
bastla
bastla 19.05.2010 um 17:17:04 Uhr
Goto Top
Hallo nightwishler!

Du könntest es ja so versuchen (Zielangabe der Logdatei unverändert übernommen):
set "IP= 4.2.2.2"  
:start
set "Erfolg=NEIN"  
ping -n 1%IP% >nul && set "Erfolg=JA"  
echo %IP% - %date%-%time% - %Erfolg%>>\\pingtest.txt
goto start
Grüße
bastla

P.S.: Für Batches (und deren Ausgaben) wäre es sinnvoll, beim Posten "<code>"- bzw "</code>"-Tags zu verwenden ...
neueradmuser
neueradmuser 19.05.2010 um 20:33:51 Uhr
Goto Top
nett =)
danke...

kann man das so verstehen das als grundvoraussetzung die variabel Erfolg auf "Nein" gesetzt wird und nur wenn ein ping durchgeht ist Erfolg = JA ?!
steh mit den Anführungszeichen ein wenig auf Kriegsfuß.


würde gerne noch ein
|find "TTL="  
einfügen um die pingzeit auch zu haben. wir haben da so kleine peaks drin von 600ms =(
bastla
bastla 19.05.2010 um 21:02:50 Uhr
Goto Top
Hallo nightwishler!
kann man das so verstehen das als grundvoraussetzung die variabel Erfolg auf "Nein" gesetzt wird und nur wenn ein ping durchgeht ist Erfolg = JA ?!
Ja - unter der Voraussetzung, dass "ping" einen brauchbaren Errorlevel lierfert (was für W2000 nicht vorausgesetzt werden sollte) ...
Das Ausgeben der Pingzeit könnte (ungetestet) etwa so gehen:
set "IP= 4.2.2.2"  
:start
set "Erfolg=NEIN"  
set "Zeit="  
for /f "tokens=7 delims==< " %%i in ('ping -n 1 %IP%^|findstr "TTL"') do set "Zeit= - %%i" && set "Erfolg=JA"  
>>\\pingtest.txt echo %IP% - %date%-%time% - %Erfolg%%Zeit%
goto start
Grüße
bastla
neueradmuser
neueradmuser 19.05.2010 um 21:30:36 Uhr
Goto Top
super - 1a arbeit...
was das angeht bist du echt top ;p

hab 2-3 kleine dinge geändert und auch wenn ich es nicht verstehe (gerade codezeile 6) - es geht
-das echo off damit die dos-box-nicht so flackert...
jetzt muß ich nur noch gucken wie groß die datei wird... es sollen 24h stunden lang mehrere router gepingt werden (pro router eine batch/ein pc)

set ip=4.2.2.2
set logdatei=pingtest.txt
:start
echo off
set Erfolg=NEIN
for /f "tokens=7 delims==< " %%i in ('ping -n 1 %IP%^|findstr "TTL"') do set "Zeit= - %%i" && set "Erfolg=JA"  
>>%logdatei% echo %IP% - %date%-%time% - %Erfolg%%Zeit%
goto start
bastla
bastla 19.05.2010 um 21:43:52 Uhr
Goto Top
Hallo nightwishler!

Besser platziert wäre das "echo off" gleich am Anfang des Batches - und dann am besten so:
@echo off & setlocal
Zur Zeile 6: Eigentlich musst Du nur passende Trennzeichen finden, um eine Zeile der Art
Antwort von 4.2.2.2: Bytes=32 Zeit=47ms TTL=246
aufteilen zu können - ich habe dazu "=", "<" (kommt hier nicht vor, aber im LAN ist ein "<1ms" ja nix Ungewöhnliches) und das Leerzeichen verwendet - als Ergebnis entstehen die Tokens

  1. Antwort
  2. von
  3. 4.2.2.2:
  4. Bytes
  5. 32
  6. Zeit
  7. 47ms
  8. TTL
  9. 246

- benötigt wird davon dann eben Nr. 7 ...

Grüße
bastla

P.S.:
was das angeht bist du echt top ;p
Nur interessehalber: In welcher Hinsicht hätte ich demnach noch Verbesserungsbedarf?
neueradmuser
neueradmuser 19.05.2010 um 21:59:28 Uhr
Goto Top
Zitat von @bastla:
P.S.:
> was das angeht bist du echt top ;p
Nur interessehalber: In welcher Hinsicht hätte ich demnach noch Verbesserungsbedarf?

weiß ich ja nicht... kenn ja nur diese "Seite" von dir ;)

PS: wenn ich in das "ping -n 1 4.2.2.2" ein "-w 5000" vor die IP einbaue so zeigt dies anscheinend keine Wirkung...
habe das gefühl das ich mit 5-10 pings pro sekunde irgendwas auf der strecke überfordere da ich 50/50 ja nein bekomme
Biber
Biber 19.05.2010 um 22:01:40 Uhr
Goto Top
[OT]
Zitat von @bastla:----
Nur interessehalber: In welcher Hinsicht hätte ich demnach noch Verbesserungsbedarf?
Ungezügelte Neugier?
[/OT]
bastla
bastla 19.05.2010 um 22:07:31 Uhr
Goto Top
Hallo nightwishler!

Wäre eine Pause durch ein zusätzliches
ping -n 1 127.0.0.1 >nul
in der Schleife zu lang?

Grüße
bastla

P.S.:@Biber
Ungezügelte Neugier?
Gönn' mir doch auch etwas Zügellosigkeit ... face-wink
neueradmuser
neueradmuser 19.05.2010 um 22:33:07 Uhr
Goto Top
habe mein -w 5000 gecancelt und lasse den 127er ping mit n -2 ausführen.
daraus resultiert 8x ein Eintrag innerhalb von 10 sekunden und alle positiv ... das sieht gut aus...

ich denke zum leitungsvergleich (rein & raus für 3 unterschiedliche Router sollte ein ping pro 1-2 sekunden genügen)

daaaanke =)
... bis zur nächsten batch ;p
RookieBoy
RookieBoy 14.08.2024 aktualisiert um 09:13:27 Uhr
Goto Top
Funktioniert 100%ig!

@echo off
:loop
for /f "tokens=*" %%b in ('ping -n 1 8.8.8.8 ^| findstr "Antwort von"') do echo %date% %time% %%b >> C:\Temp\ping-log\ping-log.txt  
timeout /t 1 >nul
goto loop
14135584197
14135584197 14.08.2024 aktualisiert um 09:34:28 Uhr
Goto Top
Zitat von @RookieBoy:

Funktioniert 100%ig!

@echo off
:loop
for /f "tokens=*" %%b in ('ping -n 1 8.8.8.8 ^| findstr "Antwort von"') do echo %date% %time% %%b >> C:\Temp\ping-log\ping-log.txt  
timeout /t 1 >nul
goto loop

Aber nur auf deutsch eingestellten Systemen 😁

P.s. Beitrag von 2009 😵‍💫🫣