Ca. 200 Device per Ping abarbeiten und in eine Log-Datei schreiben
Hallo Zusammen,
wir müssen mehrere IP-Adressen abfragen und das Ergebnis protokollieren.
Die IP-Liste (ca. 200 Einträge) sieht wie folgt aus:
Es soll ein "normaler" Ping mit 4 Abfragen abgesetzt werden, das Ergebnis sollte wie folgt aussehen und in einer Datei gespeichert werden.
Ist das so per Batch umsetzbar? Ich habe schon im Forum gesucht, aber leider nichts passendes gefunden.
mf
PS: Mist, das falsche Unterforum, kann das bitte jemand nach Entwicklung -> Batch verschieben?
wir müssen mehrere IP-Adressen abfragen und das Ergebnis protokollieren.
Die IP-Liste (ca. 200 Einträge) sieht wie folgt aus:
Type Name IP Address
AUDIX france 10.200.199.40
AUDIX intuity 10.200.96.80
IP INDIA 10.181.130.5
IP SYD_DCTR 10.180.15.87
IP SYD_DCTR2 10.180.15.78
IP EMMC 10.200.96.140
IP NORTEL_ITALY 10.200.10.126
IP SP_ESS_1 10.200.96.21
IP SP_ESS_2 10.200.96.22
IP UK_ESS_1 10.203.149.241
IP UK_ESS_2 10.203.149.242
IP clan02a05 10.200.251.11
IP clan02b05 10.200.251.21
Es soll ein "normaler" Ping mit 4 Abfragen abgesetzt werden, das Ergebnis sollte wie folgt aussehen und in einer Datei gespeichert werden.
Datum Zeit Type Name IP-Address Ping1 Ping2 Ping3 Ping4
04.12.2010 19:35:48,43 IP SP_ESS_1 10.200.96.21 <1ms <1ms <1ms <1ms
04.12.2010 19:35:48,43 IP SP_ESS_2 10.200.96.21 <1ms <1ms <1ms <1ms
mf
PS: Mist, das falsche Unterforum, kann das bitte jemand nach Entwicklung -> Batch verschieben?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 04.12.2010 um 23:45:40 Uhr
PS: Mist, das falsche Unterforum, kann das bitte jemand nach Entwicklung -> Batch verschieben?
Jepp - zum Beispiel der Beitragsersteller. Anmelden und auf "Editieren" des Beitrags klicken.Danach lässt sich der Beitrag auch richtig hinschieben.
Aber ich kann das auch schnell machen.
Grüße
Biber
Content-ID: 156341
Url: https://administrator.de/forum/ca-200-device-per-ping-abarbeiten-und-in-eine-log-datei-schreiben-156341.html
Ausgedruckt am: 23.12.2024 um 07:12 Uhr
11 Kommentare
Neuester Kommentar
Hallo Mikefield!
Ungetestet etwa so:
Grüße
bastla
Ungetestet etwa so:
@echo off & setlocal enabledelayedexpansion
set "Liste=D:\IP-Liste.txt"
set "Log=D:\Log.txt"
>"%Log%" echo Datum Zeit Type Name IP-Address Ping1 Ping2 Ping3 Ping4
for /f "usebackq tokens=1-3" %%a in ("%Liste%") do (
set "Zeile=!date! !time! %%a %%b %%c "
for /f "tokens=5" %%i in ('ping %%c^|findstr "TTL"') do for /f "delims=Zeit" %%t in ("%%i") do set "Zeile=!Zeile! %%t"
>>"%Log%" echo !Zeile:<=^<!
)
bastla
Hallo Mikefield!
Wird vermutlich ein Sonderzeichen-Problem sein - es wäre daher sinnvoll (gewesen), die entsprechenden Einträge zu posten ...
Abgesehen davon kannst Du aus dem "
Grüße
bastla
Wird vermutlich ein Sonderzeichen-Problem sein - es wäre daher sinnvoll (gewesen), die entsprechenden Einträge zu posten ...
Abgesehen davon kannst Du aus dem "
echo off
" in der ersten Zeile ein "echo on
" machen und den Batch von der Kommandozeile starten - dann siehst Du, was abläuft.Grüße
bastla
Hallo Mikefield!
Wenn Deine "Nodes.txt" auch eine Zeile mit den Spaltenüberschriften enthält (ansonsten "
Grüße
bastla
Wenn Deine "Nodes.txt" auch eine Zeile mit den Spaltenüberschriften enthält (ansonsten "
skip=1
" weg lassen), sollte das dann etwa so klappen (die Anzahl der enthaltenen TAB musst Du ev noch etwas anpassen):@echo off & setlocal enabledelayedexpansion
set "Liste=F:\Test\nodes.txt"
set "Log=F:\Test\Ping.txt"
>"%Log%" echo Datum Zeit Type Name IP-Address Ping1 Ping2 Ping3 Ping4
for /f "usebackq skip=1 tokens=1-3" %%a in ("%Liste%") do (
set "Zeile=!date! !time! %%a %%b %%c"
for /f "tokens=5" %%i in ('ping %%c^|findstr "TTL"') do for /f "delims=Zeit" %%t in ("%%i") do set "Zeile=!Zeile! %%t"
>>"%Log%" echo !Zeile!
)
bastla
Hallo Mikefield,
statt 4*200 Sekunden zu warten, könnte man mehrere gleichzeitig abfragen.
Indem man "ping-tasks" startet und die Ausgabe in eine Datei Umleitet und dann analysiert.
Etwa sowas in der Art
Grüße
jeb
statt 4*200 Sekunden zu warten, könnte man mehrere gleichzeitig abfragen.
Indem man "ping-tasks" startet und die Ausgabe in eine Datei Umleitet und dann analysiert.
Etwa sowas in der Art
@echo off
setlocal enabledelayedexpansion
set "Liste=F:\Test\nodes.txt"
set "Log=F:\Test\Ping.txt"
>"%Log%" echo Datum Zeit Type Name IP-Address Ping1 Ping2 Ping3 Ping4
rem Pro Ping einen neuen Prozess asyncron im gleichen Fenster starten, ausgabe nach ping_IP.txt umleiten
for /f "usebackq skip=1 tokens=1-3" %%a in ("%Liste%") do (
start /b ping %%c > ping_%%c.txt
)
rem Abwarten, damit alle fertig sind
ping -n 5 localhost > nul
rem Jetzt alle einlesen
for /f "usebackq skip=1 tokens=1-3" %%a in ("%Liste%") do (
set "Zeile=!date! !time! %%a %%b %%c"
for /f "tokens=5" %%i in ('type ping_%%c.txt^|findstr "TTL"') do for /f "delims=Zeit" %%t in ("%%i") do set "Zeile=!Zeile! %%t"
>>"%Log%" echo !Zeile!
)
Grüße
jeb
Zitat von @bastla:
@jeb
Gute Idee
Frage am Rande: Welchen Vorteil hat
gegenüber
?
Grüße
bastla
@jeb
Gute Idee
Frage am Rande: Welchen Vorteil hat
'type ping_%%c.txt^|findstr "TTL"'
>
'findstr "TTL" ping_%%c.txt'
>
Grüße
bastla
Hallo bastla,
es gibt natürlich keinen Vorteil ich hab einfach den vorhanden Code möglichst wenig geändert.
Und außer bei Unicode/Codepage Problemen fällt mir auch kein Vorteil ein, bei dem ein type <file> [PIPE] besser wäre.
PS: Die Idee klappt auch, ich synchronisiere so immer mehrere Repositorys gleichzeitig, das spart deutlich Zeit
Gruß
jeb