Ping Antwort auswerten ?
Hallo,
habe einen W2k Server der z.B. alle 15 Minuten
3 Clients anpingen soll.
Kann man evtl. die Antwort (Zeitüberschreitung)
der pings in einer Batch auswerten ?
Zweck ist das der Server nicht mehr stur Zeitgesteuert runter fährt,
sondern nur dann wenn "keiner" der 3 Clients mehr läuft...
Geht da was per Batch, oder gibt's in dem Fall eine bessere Lösung ?
LG langer
habe einen W2k Server der z.B. alle 15 Minuten
3 Clients anpingen soll.
Kann man evtl. die Antwort (Zeitüberschreitung)
der pings in einer Batch auswerten ?
Zweck ist das der Server nicht mehr stur Zeitgesteuert runter fährt,
sondern nur dann wenn "keiner" der 3 Clients mehr läuft...
Geht da was per Batch, oder gibt's in dem Fall eine bessere Lösung ?
LG langer
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 20291
Url: https://administrator.de/contentid/20291
Ausgedruckt am: 23.11.2024 um 05:11 Uhr
15 Kommentare
Neuester Kommentar
Hi,
ich hab mal hier mal ein Batch zusammengezimmert ...
Allerdings ist das so nicht ganz auf meinem eigenen Mist gewachsen. Und das ist auch der Grund dass die Batch etwas umständlich ist, aber ich bin mir sicher, unser Biber erklärt uns wie es besser geht (bei dem hab ich es auch geklaut: )
Du musst in der Batch noch die Rechnernamen oder IP-Adressen eingeben, die überwacht werden sollen. Und den Shutdown-Befehl. Das ganze dann als geplanten Task der alle 15 Minuten läuft ...
So, hier die Batch:
Gruss,
Thomas
ich hab mal hier mal ein Batch zusammengezimmert ...
Allerdings ist das so nicht ganz auf meinem eigenen Mist gewachsen. Und das ist auch der Grund dass die Batch etwas umständlich ist, aber ich bin mir sicher, unser Biber erklärt uns wie es besser geht (bei dem hab ich es auch geklaut: )
Du musst in der Batch noch die Rechnernamen oder IP-Adressen eingeben, die überwacht werden sollen. Und den Shutdown-Befehl. Das ganze dann als geplanten Task der alle 15 Minuten läuft ...
So, hier die Batch:
@echo off
set host1=Compi1
set host2=Compi2
set host3=Compi3
ping -n 1 %host1% >nul || goto AAA
goto online
:AAA
ping -n 1 %host2% >nul || goto BBB
goto online
:BBB
ping -n 1 %host3% >nul || goto CCC
goto online
:CCC
Echo Jetzt sind alle Rechner aus.
REM Hierhin sollte dann der Shutdown-Befehl
goto ende
:online
echo Mindesten ein Rechner ist noch an.
:ende
echo Ende des Scripts
Gruss,
Thomas
Moin langer,
da muss ich superboh aber mal rettend zur Seite stehen - ich habe seinen Ansatz getestet und das läuft.
Ich habe das ein wenig zusammengedampft, weil ich bei langen Bätchen immer den Überblick verliere.
Aber die 3PingsTest.bat ist hoffentlich wiedererkennbar das obige Script.
Ich lasse das 2x durchlaufen - das erste Mal mit 3 Hosts, von denen einer (localhost) existiert.
Das zweite Mal mit drei Hosts, die wirklich nicht antworten.
Output:
Anmerkung: das "setlocal DisableDelayedExpansion" muss ich auf MEINEM Rechner machen, weil bei mir "DelayedExpansion" enabled ist - und M$ mir sonst die Ausrufungszeichen verschluckt. Die Coden ja noch schlechter als ich... *gg
Das Script von Thomas macht also, was es soll.
Mögliche Fehlerquelle kann ja fast nur sein, dass Du ein Ping.exe-Utility auf dem Rechner hast, das zu blöd ist, bei Fehler ein Errorlevel zu setzen. Lach nicht - M$ hat so eins bei den ersten W2000-Versionen ausgeliefert.
Bitte prüfe das am CMD-Prompt:
ping -n 1 localhost >nul && @echo Online!
->wenn bei der zweiten Testzeile kein "OFFline" zurückkommt, nimm ein anderes Ping-Utility von echten Programmierern. Z.B."FreePing.exe".
... und die übersichtlichste und einfachste ist natürlich mit UND-Verknüpfungen ("&&")
HTH Biber
da muss ich superboh aber mal rettend zur Seite stehen - ich habe seinen Ansatz getestet und das läuft.
Ich habe das ein wenig zusammengedampft, weil ich bei langen Bätchen immer den Überblick verliere.
Aber die 3PingsTest.bat ist hoffentlich wiedererkennbar das obige Script.
Ich lasse das 2x durchlaufen - das erste Mal mit 3 Hosts, von denen einer (localhost) existiert.
Das zweite Mal mit drei Hosts, die wirklich nicht antworten.
::----snipp 3PingsTest.bat-------
@echo off & setlocal DisableDelayedExpansion
set "host1=gibtsnich" & set "host2=localhost" & set "host3=schongarnicht"
:again
ping -n 1 %host1%>nul||ping -n 1 %host2%>nul||ping -n 1 %host3% >nul||goto ShutMeDown
(set host) & echo ...............Mindestens ein Ping ok!
Set "Host2=firlefanz"
goto :again
~~~
:ShutmeDown
(set host) & echo ...............Alle 3 OFFLINE! Mache jetzt shutdown........
goto :eof
::--------snapp 3PingsTest.bat
>e:\3PingsTest.bat
host1=gibtsnich
host2=localhost
host3=schongarnicht
...............Mindestens ein Ping ok!
host1=gibtsnich
host2=firlefanz
host3=schongarnicht
...............Alle 3 OFFLINE! Mache jetzt shutdown........
Das Script von Thomas macht also, was es soll.
Mögliche Fehlerquelle kann ja fast nur sein, dass Du ein Ping.exe-Utility auf dem Rechner hast, das zu blöd ist, bei Fehler ein Errorlevel zu setzen. Lach nicht - M$ hat so eins bei den ersten W2000-Versionen ausgeliefert.
Bitte prüfe das am CMD-Prompt:
ping -n 1 localhost >nul && @echo Online!
->wenn bei der zweiten Testzeile kein "OFFline" zurückkommt, nimm ein anderes Ping-Utility von echten Programmierern. Z.B."FreePing.exe".
::------3PingsMitODER.bat
@echo off & setlocal
set "host1=gibtsnich" & set "host2=localhost" & set "host3=schongarnicht"
ping -n 1 %host1%>nul||ping -n 1 %host2%>nul||ping -n 1 %host3% >nul||goto ShutMeDown
goto :eof
:ShutmeDown
echo hier kommt das Shutdown-Command ...
::-----3PingsMitODER.bat
::-------3PingsMitUND.bat
@echo off & setlocal
set "host1=gibtsnich" & set "host2=localhost" & set "host3=schongarnicht"
ping -n 1 %host1%>nul && goto :eof
ping -n 1 %host2%>nul && goto :eof
ping -n 1 %host3%>nul && goto :eof
echo hier kommt das Shutdown-Command ...
::-------3PingsMitUND.bat
Moin langer,
bin auch im Moment ratlos. Sitze grad an einem XP-Prof-Rechner, aber an dem Code ist eigentlich ja nichts dabei, was unter W2K anders läuft IMHO *kopfkratz*
Hilft nichts - Kopier Dir Zeile für Zeile auf den CMD-Prompt und prüfe.
Rein bio-optisch durch das Draufschauen auf die paar Zeilen finde ich es auch nicht.
Sorry, mehr seh ich grad nicht.
Bin gespannt auf diesen Fehler.
Biber
bin auch im Moment ratlos. Sitze grad an einem XP-Prof-Rechner, aber an dem Code ist eigentlich ja nichts dabei, was unter W2K anders läuft IMHO *kopfkratz*
Hilft nichts - Kopier Dir Zeile für Zeile auf den CMD-Prompt und prüfe.
Rein bio-optisch durch das Draufschauen auf die paar Zeilen finde ich es auch nicht.
" (ODERs) zu klammern. Also "(ping -n 1 %host1% >nul) |
Sorry, mehr seh ich grad nicht.
Bin gespannt auf diesen Fehler.
Biber
@langer
P.S. Auch, wenn es weit hergeholt ist: rufe mal bitte die W2K-Ping.exe mit Pfad-Angabe.
Also mit "...\Ping.exe ...parameters".
Nicht dass da aus Versehen eine "Ping.Bat" im W2K-Rechner-Pfad gefunden wird...
Merkwürdig...
P.S. Auch, wenn es weit hergeholt ist: rufe mal bitte die W2K-Ping.exe mit Pfad-Angabe.
Also mit "...\Ping.exe ...parameters".
Nicht dass da aus Versehen eine "Ping.Bat" im W2K-Rechner-Pfad gefunden wird...
Merkwürdig...
Moin langer,
zu M$ möchte ich mich jetzt nicht äußern...
Hier gibt es ein Ping-Konsolen-Utility: http://www.kwakkelflap.com/files/fping212.zip
Nennt sich FPing statt Ping und funktioniert. *winkz~~~ zu BillyBoy *
Schönes Wochenende & Nice Weekend To Redmond/Virginia
Biber
zu M$ möchte ich mich jetzt nicht äußern...
Hier gibt es ein Ping-Konsolen-Utility: http://www.kwakkelflap.com/files/fping212.zip
Nennt sich FPing statt Ping und funktioniert. *winkz~~~ zu BillyBoy *
Schönes Wochenende & Nice Weekend To Redmond/Virginia
Biber
Hi langer,
bei mir tun alle Varianten des Scripts sowohl unter WinXP als auch unter Win2000.
Was hast Du denn für ne Version von Ping.exe? Meine zeigt es mir als 5.0.2134.1 an.
Dateigrösse ist 17.168 Bytes und die Datei ist vom 10.12.99, 13:00 Uhr.
Gruss,
Thomas
Ach ja, noch was am Rande ... den Systemdateischutz kannst Du überlisten, wenn Du z.B. nach der Ping.exe suchst, dann beide markierst und beide gleichzeitig löscht. Danach einfach wieder in beide Verzeichnisse die neue kopieren.
bei mir tun alle Varianten des Scripts sowohl unter WinXP als auch unter Win2000.
Was hast Du denn für ne Version von Ping.exe? Meine zeigt es mir als 5.0.2134.1 an.
Dateigrösse ist 17.168 Bytes und die Datei ist vom 10.12.99, 13:00 Uhr.
Gruss,
Thomas
Ach ja, noch was am Rande ... den Systemdateischutz kannst Du überlisten, wenn Du z.B. nach der Ping.exe suchst, dann beide markierst und beide gleichzeitig löscht. Danach einfach wieder in beide Verzeichnisse die neue kopieren.
Moin langer und Superboh,
dann will ich auch mal fair gegenüber M$ bleiben: Laut der Ping-Hilfe unter XP ("Ping /?") könnte man/frau es so auslegen, dass tatsächlich die Reihenfolge der Parameter keine Rolle spielt und der hostname nicht immer als Letztes, nach den optionalen Parametern genannt werden soll.
Also "ping [parameter] hostname" == "ping hostname [parameter]". ( bei XP++)
Und"ping [parameter] hostname" "ping hostname [parameter]". ( bei Win2K und kleiner)
Ist mir allerdings noch nie aufgefallen, dass M$ da bei W2k pingeliger ist als unter XP.
Ich werde es in eventuellen künftigen Beispielen dann auch in dieser "restriktiveren" W2k-Form mit "Hostname nicht als Letztes" schreiben. *Axelzuck* Glaube aber nicht, dass es Absicht von M$ war, eher normale Schlampigkeit.
Letzte Fussnote zum fehlenden/falschen Errorlevelwert bei Ping.exe von W2K:
Das Ping lässt sich natürlich trotzdem verwenden, wenn man/frau den Errorlevel "über Bande" holt. Ping liefert ja im Erfolgsfall einen Output mit dem String "Antwort von".. bei der deutschen bzw. "Reply from" bei der US-Version.
Somit lässt sich über [Ping hostname -n 1|find "Antwort von" >nul] ein Errorlevel von 0/OK oder 1/Fehler setzen. Nur für den Fall, dass kein FPing.exe zur Hand ist.
Schönen Rest-Sonntag Euch beiden
Biber
dann will ich auch mal fair gegenüber M$ bleiben: Laut der Ping-Hilfe unter XP ("Ping /?") könnte man/frau es so auslegen, dass tatsächlich die Reihenfolge der Parameter keine Rolle spielt und der hostname nicht immer als Letztes, nach den optionalen Parametern genannt werden soll.
Also "ping [parameter] hostname" == "ping hostname [parameter]". ( bei XP++)
Und
Ist mir allerdings noch nie aufgefallen, dass M$ da bei W2k pingeliger ist als unter XP.
Ich werde es in eventuellen künftigen Beispielen dann auch in dieser "restriktiveren" W2k-Form mit "Hostname nicht als Letztes" schreiben. *Axelzuck* Glaube aber nicht, dass es Absicht von M$ war, eher normale Schlampigkeit.
Letzte Fussnote zum fehlenden/falschen Errorlevelwert bei Ping.exe von W2K:
Das Ping lässt sich natürlich trotzdem verwenden, wenn man/frau den Errorlevel "über Bande" holt. Ping liefert ja im Erfolgsfall einen Output mit dem String "Antwort von".. bei der deutschen bzw. "Reply from" bei der US-Version.
Somit lässt sich über [Ping hostname -n 1|find "Antwort von" >nul] ein Errorlevel von 0/OK oder 1/Fehler setzen. Nur für den Fall, dass kein FPing.exe zur Hand ist.
Schönen Rest-Sonntag Euch beiden
Biber