Batch um mehrere IP-Adressen via Ping auf Erreichbarkeit zu prüfen

Mitglied: Galindiesel

Galindiesel (Level 1) - Jetzt verbinden

27.04.2016 um 09:44 Uhr, 4345 Aufrufe, 7 Kommentare

Hallo liebe Administratoren Gemeinde.

Ich muss ganz viele IP-Adressen auf Erreichbarkeit prüfen und protokollieren. Ich darf keine Tools benutzen, also benutze ich eine batch.
Die einfachste Methode ist ein zyklischer Ping der im Loop über die Liste der IP-Adressen geht. Dazu gibt es hier viele nützliche Beiträge, leider komme ich mit keinem wirklich weiter (oder ich finde nicht den richtigen...). Die IP Adressen befinden sich in einer Datei namens ip.list und sehen so aus:

10.100.8.10
10.100.8.11
10.100.8.12
...

Ich habe hier im Forum ein super Skript gefunden um EINE IP-Adresse zu prüfen. Das klappt auch wunderbar wenn ich eine IP als fester Parameter in die batch eintrage.

set "IP=10.100.8.10"
: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"
>>result.log echo %IP% - %date%-%time% - %Erfolg%%Zeit%
goto start

Das Ergebnis in der result.log sieht so aus:

10.100.8.10 - 27/04/2016- 8:28:05.73 - JA - 35ms
10.100.8.10 - 27/04/2016- 8:28:05.87 - JA - 33ms
10.100.8.10 - 27/04/2016- 8:28:06.01 - JA - 33ms
....

Perfekt, genau wie ich es haben will. Nun muss ich nichts weiter tun, als die IP-Adresse aus der ip.list auslesen und der FOR-Schleife übergeben.
Dazu benutze ich eine weitere FOR-Schleife:

:start
FOR /f %%f IN (ip.list) DO (
set "Erfolg=NEIN"
set "Zeit="
for /f "tokens=7 delims==< " %%i in ('ping -n 1 %%f^|findstr "TTL"') do set "Zeit= - %%i" && set "Erfolg=JA"
>>result.log echo %%f - %date%-%time% - %Erfolg%%Zeit%
)
goto start

Ganz schlicht. Leider funktioniert das nicht. Das Ergebnis in der result.log sieht so aus:

10.100.8.10 - 27/04/2016- 8:34:26.15 -
10.100.8.11 - 27/04/2016- 8:34:26.15 -
10.100.8.12 - 27/04/2016- 8:34:26.15 -
10.100.8.13 - 27/04/2016- 8:34:26.15 -

Wie man sieht, werden die IP-Adressen richtig übergeben, aber die Parameter %Erfolg% und %Zeit% gehen "verloren", oder werden einfach nicht gesetzt... Versuche seit zwei Tagen das Problem zu lösen, mit Schreibweise in einer Zeile, Klammern an verschiedenen Stellen, mit TABs arbeiten usw. Hab hier auch einige verschachtelte scripts gefunden und folgendes versucht:

:start
FOR /f %%f IN (ip.list) DO (
>>result.log type nul
set "Erfolg=NEIN"
set "Zeit="
setlocal enabledelayedexpansion
for /f "tokens=7 delims==< " %%i in ('ping -n 1 %%f^|findstr "TTL"') do set "Zeit= - %%i" && set "Erfolg=JA"
>>result.log echo %%f - %date%-%time% - %Erfolg%%Zeit%
endlocal
)
goto start

Wobei ich sagen muss, dass ich das enabledelayedexpansion und endlocal nicht verstehe. Wie auch immer, das Ergebnis ist das gleiche...
Kann mir jemand sagen, was ich falsch mache?

Vielen Dank im Voraus.

Gruß,
GalinDiesel
Mitglied: MrCount
27.04.2016, aktualisiert um 10:15 Uhr
Hallo GalinDiesel,

also ich habe gerade den Teil


getestet.
Bei mir läuft das ohne Probleme...

Ergebnis:

Allerdings sind die ersten 3 Versuche (1 je IP aus der Liste) auch ohne Ergebnis


Bitte warten ..
Mitglied: Galindiesel
27.04.2016 um 10:26 Uhr
Hallo MrCount,

danke für die schnelle Antwort.
Meine IP-Liste war wohl zu lang. Habe nie auf einen zweiten Durchlauf gewartet. Allerdings stimmen die Parameter %Erfolg% und %Zeit% immer noch nicht... Habe meine IP-Liste jetzt verkürzt und eine nicht erreichbare Adresse (10.10.10.10) ans Ende der Liste gesetzt. Das Ergebnis sieht jetzt so aus:

10.100.8.10 - 27/04/2016- 9:22:19.22 -
10.100.8.11 - 27/04/2016- 9:22:19.22 -
10.100.8.12 - 27/04/2016- 9:22:19.22 -
10.100.8.13 - 27/04/2016- 9:22:19.22 -
10.10.10.10 - 27/04/2016- 9:22:19.22 -
10.100.8.10 - 27/04/2016- 9:22:23.60 - NEIN
10.100.8.11 - 27/04/2016- 9:22:23.60 - NEIN
10.100.8.12 - 27/04/2016- 9:22:23.60 - NEIN
10.100.8.13 - 27/04/2016- 9:22:23.60 - NEIN
10.10.10.10 - 27/04/2016- 9:22:23.60 - NEIN
10.100.8.10 - 27/04/2016- 9:22:28.10 - NEIN

Die erreichbaren sind jetzt auch NEIN...

Wenn ich die nicht erreichbare in der Mitte der Liste platziere, dann sieht das Ergebnis so aus:

10.100.8.10 - 27/04/2016- 9:18:51.55 -
10.10.10.10 - 27/04/2016- 9:18:51.55 -
10.100.8.11 - 27/04/2016- 9:18:51.55 -
10.100.8.12 - 27/04/2016- 9:18:51.55 -
10.100.8.13 - 27/04/2016- 9:18:51.55 -
10.100.8.10 - 27/04/2016- 9:18:55.83 - JA - 34ms
10.10.10.10 - 27/04/2016- 9:18:55.83 - JA - 34ms
10.100.8.11 - 27/04/2016- 9:18:55.83 - JA - 34ms
10.100.8.12 - 27/04/2016- 9:18:55.83 - JA - 34ms
10.100.8.13 - 27/04/2016- 9:18:55.83 - JA - 34ms
10.100.8.10 - 27/04/2016- 9:18:59.91 - JA - 34ms
10.10.10.10 - 27/04/2016- 9:18:59.91 - JA - 34ms

Die nicht erreichbare hat jetzt auch JA...

Also es scheint, als würde er sich die beiden Parameter %Erfolg% und %Zeit% aus dem Ergebnis der letzten IP-Adresse aus der liste zu merken und im nächsten Durchlauf für alle anderen zu setzen...

Gruß,
GalinDiesel
Bitte warten ..
Mitglied: MrCount
LÖSUNG 27.04.2016 um 10:43 Uhr
So sollte es gehen:


Bitte warten ..
Mitglied: Galindiesel
27.04.2016 um 10:57 Uhr
Hallo MrCount,

JAAA, das funktioniert!! DANKE!!

was war jetzt das entscheidende?

das setlocal enabledelayedexpansion, oder die Klammern der inneren FOR Schleife, oder das !Erfolg!!Zeit!, oder alle drei zusammen?

Nochmal Danke & Gruß,
GalinDiesel
Bitte warten ..
Mitglied: MrCount
27.04.2016 um 11:04 Uhr
das


und die ! bei den Variablen
Bitte warten ..
Mitglied: thielm
29.07.2019 um 22:36 Uhr
Guten Abend,
ich benutze dankenswerter Weise dieses Skript, um die Erreichbarkeit von 6 Galaxy Tab A Tablets zu überprüfen. Jetzt habe ich allerdings ein Problem.
Ein Tablet zeigt immer "Nein" also offline an, obwohl es mit dem Internet verbunden ist und auch über das Netzwerk erreichbar ist. (http Aufruf um auf eine App zuzugreifen funktioniert, mit einem vorher eingestelltem Port.) Hat man diese http Anfrage gemacht, dann wird in dem Ping das Tablet auch als Online angezeigt. Kurz später, beim nächsten Ping (mit 3min Pause) wieder als offline. Alle anderen Tablets werden durchgänig als Online angezeigt.

Ich bin nicht allzu fit im Thema Netzwerk. Ich hoffe mir kann hier einer von euch helfen.
Bitte warten ..
Mitglied: thielm
12.04.2020 um 16:34 Uhr
Viele Dank für das Skript, allerdings funktioniert es bei mir unter Windows10 Pro mit den aktuellsten Update nicht.
Muss ich da irgendwas verändern?

LG
Bitte warten ..
Heiß diskutierte Inhalte
LAN, WAN, Wireless
Starlink im Unternehmen?
0xFFFFVor 14 StundenFrageLAN, WAN, Wireless36 Kommentare

Guten Morgen Admins, leider leiden wir darunter, dass wir uns hier in DE noch in einem Entwicklungsland was die Internetanbindung angeht, sehr. Nun kam ...

Microsoft
Datenkrake - Browser
DennisWeberVor 1 TagErfahrungsberichtMicrosoft10 Kommentare

Hallo zusammen, ich empfehle euch mal definitiv in "Temp" Verzeichnis eures Browsers zu schauen. Es war für mich erschreckend, wie viele wichtige Dokumente und ...

Off Topic
Klimaanlage im Serverraum
gelöst imebroVor 10 StundenFrageOff Topic19 Kommentare

Hallo, wir haben einen kleinen Serverraum (viell. 5 - 6 m²), in dem ein Serverschrank steht. Der Raum hat kein Fenster!!! Darin befinden sich ...

Netzwerkmanagement
Sicherheitsrisiken Synology DS Admin Konto
RitchtoolsVor 1 TagFrageNetzwerkmanagement6 Kommentare

Hallo Zusammen, ich habe die Pflege von einem Firmen NAS übernommen (Synology) es sind mehrere Rechner im Netzwerk die auf Daten zugreifen. Leider hat ...

Windows 10
Windows 10 hängt bei Neustart immer bei "Bitte warten" über Stunden
gelöst Odde23Vor 12 StundenFrageWindows 1023 Kommentare

Ich habe seit längerem, um genau zu sein seit gut einem Jahr, da wurde der Rechner gekauft, das Problem, dass der Rechner bei einem ...

Windows 10
Windows 10 System Recovery Ordner fast 60 GB - Wie löschen?
Looser27Vor 1 TagFrageWindows 106 Kommentare

Guten Morgen, bei einem unserer Clients funktioniert scheinbar das automatische Aufräumen nach Updates / Upgrades nicht. Wie kann ich dem Kollegen auf die Schnelle ...

Windows 10
Windows 10 verliert die Druckertreiber
KMP1988Vor 1 TagFrageWindows 1010 Kommentare

Servus zusammen, wir haben bei einem Kunden folgende Konstellation: - Server2019 (AD, DNS, DHCP) - Server2019 (Print-Server-Rolle) - W10-Clients Die Drucker werden übers Logon-Scirpt ...

DNS
Opendns.com - Kosten?
cordialVor 1 TagFrageDNS2 Kommentare

Moin, Ich möchte gerne den OpenDNS Dienst mal verstehen. Hab da schon länger einen Account mit Filterung. Die "Free" Edition bei OpenDNS ist doch ...