cherdeg
Goto Top

Windows 7 - Ping mit Zeitstempel

Hi,

Das Thema gab's hier schon mal, aber meine derzeitigen Probleme mit der von KabelBW zu Elektroschrott vorkonfigurierten Fritz!Box machten es erforderlich, mich dessen nochmals anzunehmen. Hier daher meine Lösung des Themas "Ping mit Zeitstempel"; ein Batchfile:

@Echo off & Setlocal EnableDelayedExpansion
for /L %%a in (0) do @for /f "delims=TTL" %%i in ('ping -n 1 192.168.14.1^|find "Antwort"') do timeout /t 10 /nobreak>Nul & echo !Time! - %%i  

Alle 10 Sekunden erfolgt ein Ping auf die Fritz!Box (in meinem Fall erreichbar unter der IP 192.168.14.1), dessen Ergebnis wird mit Zeitstempel vom Batch ausgegeben. Die Ausgabe des Batch lässt sich dann easy in ein Log-File umlenken. Hiesse das Batchfile bspw. "ping4ever.bat" und sollte in einen Datei "pinglog.txt" geschrieben werden, dann lautete der entsprechende Aufruf:

ping4ever >pinglog.txt


Gruß,
Christoph

Content-Key: 165241

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

Printed on: April 19, 2024 at 09:04 o'clock

Member: bastla
bastla Apr 27, 2011 at 13:22:00 (UTC)
Goto Top
Hallo cherdeg!

Vielleicht könntest Du Deinen Tipp noch um den Tipp, wie man/frau zur "timeout.exe" kommt, erweitern ...

Grüße
bastla

P.S.: Da "delims" keinen String, sondern nur dessen einzelne Zeichen verarbeitet, ist mindestens ein "T" (und eigentlich auch das "L") überflüssig ...

... und außerdem "hinkt" die Ausgabe 10 Sekunden hinterher.
Member: cherdeg
cherdeg Apr 27, 2011 at 14:04:22 (UTC)
Goto Top
Hallo bastla,

wie man schon am Titel sehen kann, dreht's sich hier um Windows 7. Da ist timeout.exe dabei (und zwar in "C:\Windows\System32" und/oder "C:\Windows\SysWOW64", was Dir ein ganz einfaches "dir timeout.exe /s" hätte auch sagen können). In XP oder Vista gibts das nicht; aber da kann man sich bspw. mit einem zweckentfremdeten "choice" behelfen.

Die Ausgabe "hinkt" nicht "hinterher" - mach doch einfach mal Deine Systemuhr auf und vergleiche die Sekunden-Timestamps mit dieser. Es ist einfach so, dass das erste Ping und auch die erste Ausgabe erst nach 10 Sekunden stattfinden. Ausserdem, wenn Du schon so alt bist, dass Dich dieser kosmetische Makel stört, dann brauchst Du im Prinzip auch das Log nicht mehr face-smile

Du kannst aber auch ganz einfach die Kommando-Reihenfolge in diesem Strings hier umbauen:

do timeout /t 10 /nobreak>Nul & echo !Time! - %%i
wird zu:
do echo !Time! - %%i & timeout /t 10 /nobreak>Nul

Was Delims angeht, können diese Trenner sehr wohl einzelne Zeichen als auch ganze Strings sein. Ich hab "TTL" genommen, um eine gewisse Lesbarkeit zu erreichen. Aber wenn Dich der eine überflüssige Buchstaben so nervt - lass ihn doch einfach weg?

Nächstes Mal vielleicht einfach mal auch selbst denken, anstelle nur zu maulen.

Gruß,
Christoph
Member: bastla
bastla Apr 27, 2011 at 14:35:45 (UTC)
Goto Top
Hallo cherdeg!
wie man schon am Titel sehen kann, dreht's sich hier um Windows 7. Da ist timeout.exe dabei
Damit hast Du wenigstens recht ...
Du kannst aber auch ganz einfach die Kommando-Reihenfolge in diesem Strings hier umbauen:
Darauf war der Hinweis gerichtet - schön, dass Du ihn verstanden hast ... face-wink
Was Delims angeht, können diese Trenner sehr wohl einzelne Zeichen als auch ganze Strings sein.
Ja, klar ...
for /f "delims=cherdeg" %i in ("Syntax-Unterricht von cherdeg bringt's!") do @echo %i
Grüße
bastla

P.S.: Das mit dem "selbst denken" ist aber doch wohl bei meinem hohen Alter schon ein wenig viel verlangt - da verlasse ich mich ganz auf qualifizierten Nachwuchs wie Dich ... face-wink
Member: cherdeg
cherdeg Apr 28, 2011 at 10:39:16 (UTC)
Goto Top
Hallo,

Jaaa Maaann, ist ja schon gut, "hoast mi", "Du mich auch" und so weiter und so fort :D

Ich hatte hier kurz überflogen: http://ss64.com/nt/for_f.html - und da steht halt klar:
Key   
   options:
      delims=xxx   The delimiter character(s) (default = a space)

Hätte vielleicht zuende lesen sollen. Nichts desto trotz ist es schon recht nervig, dass man in der Rubrik "Tipps" teilweise falsche Nörgel-Kritik über sich ergehen lassen muss, anstelle vom Kritiker (aka "Dir") einfach ein optimiertes Script gepostet zu bekommen. Dass hier fast nichts "der Weisheit letzter Schluss" ist, sollte jeder wissen - also bitte nicht destruktiv sein, sondern mit konstruktiven Optimierungen glänzen.

Gruß,
Christoph
Member: bastla
bastla Apr 28, 2011 at 14:53:36 (UTC)
Goto Top
Hallo cherdeg!

Nicht gleich verzweifeln, Du hast es doch beinahe schon ... face-wink

... aber weil Du Dir ja auch von mir eine Variante gewünscht hast (nur leicht konstruktiv angehaucht - das Glänzen wollte ich natürlich weiterhin in Deinem Thread Dir überlassen):
@echo off & setlocal enabledelayedexpansion
set "IP=192.168.14.1"  
echo Pinge %IP%
echo\
for /L %%a in (0) do for /f "tokens=5" %%i in ('ping -n 1 %IP%^|find "Antwort"') do echo !time:~,8! %%i & timeout /t 10 /nobreak>nul  
Da ich ja mittlerweile Deine legere Einstellung zu "10 Sekunden" kenne, dachte ich, die Angabe der Zeit auf Hundertstelsekunden genau wäre vielleicht nicht ganz in Deinem Sinn ... face-wink

Grüße
bastla

P.S.: Ich mag Deine entspannte Art (mit vielen Worten das Nötigste zu sagen) ... face-wink
Mitglied: 99045
99045 Apr 28, 2011 at 22:39:33 (UTC)
Goto Top
Hi,

@bastla

hab auch noch was, ohne timeout.exe und ohne delayedexpansions:

@echo off & setlocal
set "IP=192.168.0.1"  
echo Pinge %IP%, Startzeit %Time%
echo\
:loop 
set "zeit=%time:~,8%"  
for /f "tokens=5" %%i in ('ping -n 11 %IP% ^|find "Antwort"') do echo %zeit %%i & goto :loop  

Gruß
Member: bastla
bastla Apr 28, 2011 at 23:19:33 (UTC)
Goto Top
@99045
ohne timeout.exe und ohne delayedexpansions
... ginge das auch etwa so (wenn man/frau nicht vorrangig auf Quantität Wert legt)::
@echo off & setlocal
set "IP=192.168.0.1"  
set "Online="  
set "Sleep=%temp%\Sleep.vbs"  

>%Sleep% echo WScript.Sleep 1000 * WScript.Arguments(0)

echo Pinge %IP%
echo\
ping -n 1 %IP%|find "Antwort">nul || echo %time:~,8% offline  
:Loop
set "zeit=%time:~,8%"  
ping -n 1 %IP%|find "Antwort">nul && (  
    if not defined Online (
        set "Online=True"  
        echo %zeit% online
    )
) || (
    if defined Online (
        set "Online="  
        echo %zeit% offline
    )
)
cscript //nologo %Sleep% 10
goto :Loop
Grüße
bastla
Mitglied: 99045
99045 Apr 28, 2011 at 23:37:38 (UTC)
Goto Top
*lach*

Dann landen wir irgendwann wieder beim Thema "Wieviel Microsekunden spare ich bei soundso, wenn ich dies und jenes im Code abändere?"
Schließlich kann man ja alles ganz anders machen. face-smile

Von Dauerlaufbatches halte ich sowieso nicht allzuviel, wozu gibt es den Taskplaner mit Wiederholmöglichkeit (ab Minutenintervall)?

Gruß
Member: mrtux
mrtux Apr 29, 2011 at 02:22:02 (UTC)
Goto Top
Hi !

Seid mir nicht böse aber bevor ich mir eine Batch bauen würde um einen verhunzten Router zu überwachen, würde ich die Zeit lieber dahingehend einsetzen und das Problem bei der Wurzel packen...Ich meine damit, den Router mit einer "gesunden" Firmware zu versehen oder mir so einen (ich kann mir dadurch ja den eigenen Routerkauf sparen - ) Müll gar nicht erst andrehen lassen.... :-P

mrtux
Member: bastla
bastla Apr 29, 2011 at 06:01:27 (UTC)
Goto Top
@99045
"Wieviel Microsekunden spare ich bei soundso, wenn ich dies und jenes im Code abändere?"
Beim letzten Ansatz ist das Thema eher "Ersparnis bei der Auswertung" ... face-wink

Grüße
bastla
Member: bastla
bastla Apr 29, 2011 at 06:02:21 (UTC)
Goto Top
@mrtux
Du wirst doch jetzt nicht anfangen, das Ganze ernst zu nehmen ...

... wir spielen doch nur ... face-wink

Grüße
bastla
Member: cherdeg
cherdeg Apr 30, 2011 at 11:31:20 (UTC)
Goto Top
Mein Lieber mrtux,

Schöner Ansatz! Das Problem ist nur leider, dass ich an die verkackte KabelBW-Leitung nichts anderes hängen kann, denn es gibt auf dem deutschen Markt schlicht keine Alternative zur Fritz!Box 6360 (relevante Features sind: DOCSIS-3 Cable Modem und ISDN-S0). Auch würde ich auf diese gerne eine andere Firmware installieren, doch leider ist die Box, wie im OP zu lesen, von den Honks des Providers zugemacht.

Wenn Du mir in dieser Richtung helfen magst, und dann auch noch eine Quelle für stabile Firmwares dafür kennst...?

Gruß,
Christoph