Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Ping Antwort auswerten ?

Frage Entwicklung Batch & Shell

Mitglied: langer

langer (Level 1) - Jetzt verbinden

24.11.2005, aktualisiert 13.09.2006, 31485 Aufrufe, 15 Kommentare

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
Mitglied: superboh
24.11.2005 um 08:25 Uhr
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: http://www.administrator.de/Per_Batchscript_FTP_Server_%FCberpr%FCfen_o ...)
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:
<font class="code">@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
</font>

Gruss,
Thomas
Bitte warten ..
Mitglied: der-poet
24.11.2005 um 08:33 Uhr
:online
echo Mindesten ein Rechner ist noch an.
goto ende

:ende
echo Ende des Scripts
REM Hierhin sollte dann der Shutdown-Befehl

ist es nicht gewollt das wenn einer online ist eben nicht der shutdownbefehl ausgeführt wird?
Bitte warten ..
Mitglied: superboh
24.11.2005 um 08:51 Uhr
Ups, sorry, da bin ich verkommen ... ich ändere es oben ab
Bitte warten ..
Mitglied: langer
24.11.2005 um 19:40 Uhr
Hi,

der Batch läuft leider immer zum ":ende" egal wie die IP
antwortet.

Was läuft noch falsch ??

Grüße langer
Bitte warten ..
Mitglied: Biber
24.11.2005 um 21:24 Uhr
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.
01.
::----snipp 3PingsTest.bat------- 
02.
@echo off & setlocal DisableDelayedExpansion 
03.
set "host1=gibtsnich" & set "host2=localhost" & set "host3=schongarnicht" 
04.
:again 
05.
ping -n 1 %host1%>nul||ping -n 1 %host2%>nul||ping -n 1 %host3% >nul||goto ShutMeDown 
06.
(set host) & echo  ...............Mindestens ein Ping ok! 
07.
Set "Host2=firlefanz" 
08.
goto :again 
09.
~~~ 
10.
:ShutmeDown 
11.
(set host) & echo ...............Alle 3 OFFLINE! Mache jetzt shutdown........ 
12.
goto :eof 
13.
::--------snapp 3PingsTest.bat
Output:
01.
>e:\3PingsTest.bat 
02.
host1=gibtsnich 
03.
host2=localhost 
04.
host3=schongarnicht 
05.
 ...............Mindestens ein Ping ok! 
06.
host1=gibtsnich 
07.
host2=firlefanz 
08.
host3=schongarnicht 
09.
...............Alle 3 OFFLINE! Mache jetzt shutdown........
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!
ping -n 1 XYunknown >nul || @echo OFFline!

->wenn bei der zweiten Testzeile kein "OFFline" zurückkommt, nimm ein anderes Ping-Utility von echten Programmierern. Z.B."FreePing.exe".

Hier noch mal zwei kürzere Varianten - einmal mit ODER-Prüfungen ("||")....
01.
::------3PingsMitODER.bat 
02.
@echo off & setlocal 
03.
set "host1=gibtsnich" & set "host2=localhost" & set "host3=schongarnicht" 
04.
ping -n 1 %host1%>nul||ping -n 1 %host2%>nul||ping -n 1 %host3% >nul||goto ShutMeDown 
05.
goto :eof 
06.
:ShutmeDown 
07.
echo hier kommt das Shutdown-Command ... 
08.
::-----3PingsMitODER.bat
... und die übersichtlichste und einfachste ist natürlich mit UND-Verknüpfungen ("&&")
01.
::-------3PingsMitUND.bat 
02.
@echo off & setlocal 
03.
set "host1=gibtsnich" & set "host2=localhost" & set "host3=schongarnicht" 
04.
ping -n 1 %host1%>nul && goto :eof 
05.
ping -n 1 %host2%>nul && goto :eof 
06.
ping -n 1 %host3%>nul && goto :eof 
07.
echo hier kommt das Shutdown-Command ... 
08.
::-------3PingsMitUND.bat
HTH Biber
Bitte warten ..
Mitglied: langer
25.11.2005 um 09:53 Uhr
Hallo Biber,

habe deinen Test
Bitte prüfe das am CMD-Prompt:
ping -n 1 localhost >nul && @echo Online!
ping -n 1 XYunknown >nul || @echo OFFline!
am W2k Rechner probiert.
Erfolgreich !

Die Batch von Thomas läuft an einem XP wunderbar,
so kopiert auf den W2K Rechner geht sie wieder "beim ersten IP"
unabhängig ob diese existiert oder nicht sofort zu "ende".

Geht so schnell, habe mal nach jedem
ping -n 1 %host1% >nul || goto AAA
pause
goto online
pause eingefügt um das zu sehen.

Beim XP Rechner dauert die Abfrage jeder nicht existierende IP in der Batch
ein paar Sekunden, kann man zuschauen,
beim W2K geht's sofort durch ???

Habe auch schon probeweise die Ping.exe von XP auf den W2k kopiert.

Bin Ratlos....

Grüße langer
Bitte warten ..
Mitglied: Biber
25.11.2005 um 11:25 Uhr
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.

Vielleicht hilft es dem W2K, die einzelnen Anweisungen zwischen den "||" (ODERs) zu klammern. Also "(ping -n 1 %host1% >nul) || goto AAA "...

Sorry, mehr seh ich grad nicht.
Bin gespannt auf diesen Fehler.
Biber
Bitte warten ..
Mitglied: Biber
25.11.2005 um 13:08 Uhr
@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...
Bitte warten ..
Mitglied: langer
25.11.2005 um 16:27 Uhr
Hi Biber,

habe deine Tipps probiert.
Hat sich leider nichts geändert, habe aber dadurch zufällig
bemerkt das mein kopieren der Ping.exe von XP auf
das W2k klammheimlich von dessen "Selbstschutz" wieder
zu nichte gemacht wird.
Man siehts am Datum das die alte Version immer wieder zurück kommt.

Hab jetzt mal die XP Ping.exe umbenannt ins W2k kopiert und die Aufrufe
in der Batch geändert.

Bekomme jetzt ne meckermeldung;

"Der Prozedureinsprungpunkt Set ThreadUILanguage wurde in der DLL Kernel32.dll nicht gefunden"

aber mit der IP Antwort kann die Batch jetzt trotzdem was anfangen !!!

Da liegt also das Problem,
wie du zuerst vermutet hast an der Ping.exe von W2k.
(Obwohl der aktuellste SP drauf ist.....)

Jetzt müßte also ein anderes Ping Utility her,
da sich W2k sträubt mit der XP Version zu arbeiten ???

Grüße langer
Bitte warten ..
Mitglied: Biber
25.11.2005 um 16:50 Uhr
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
Bitte warten ..
Mitglied: langer
26.11.2005 um 02:22 Uhr
Hallo Biber,

hoffe ich treibe dich jetzt nicht in den Wahnsinn,
mit fping unter W2k das gleiche Problem.

Die ausgabe des Pings interessiert irgendwie nicht.
Nach dem ersten Ping (mit natürlich nicht existierender IP)
gehts nicht nach "goto AAA" sondern nur in die nächste Zeile
die nach goto online schickt.

Wie schaut's mit dem errorlevel der Pings aus, kann man das
irgendwie kontrollieren ?

Hier mal ein Beispiel, nur ob ich jetzt Syntaxblind geworden bin....

Die pause(n) und der Aufruf der calc.exe sind nur zum Test.
Habe aber auch deine und / oder Beispiele probiert.
Es bleibt die Reaktionslosigkeit der Geschichte ob eine IP existiert oder nicht ???

::@echo off

set host1=192.168.0.6
set host2=192.168.0.7
set host3=192.168.0.8

fping -n 1 %host1% >nul || goto AAA
pause
goto online

:AAA
pause
fping -n 1 %host2% >nul || goto BBB
goto online

:BBB
pause
fping -n 1 %host3% >nul || goto CCC
goto online

:CCC
pause
echo Jetzt sind alle Rechner aus.

%SystemRoot%\System32\calc.exe
::C:\Anw-Tools\Fernsteuerung\Ruhe\ruhe.exe /A
goto ende

:online
@echo Mindesten ein Rechner ist noch an.

:ende
@echo Ende des Scripts

Hoffe das verdirbt jetzt nicht dein Wochenende

Grüße langer
Bitte warten ..
Mitglied: superboh
26.11.2005 um 04:46 Uhr
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.
Bitte warten ..
Mitglied: langer
26.11.2005 um 11:39 Uhr
Hallo Thomas, Biber,

Hab's geschafft.
Läuft jetzt mit fping und W2k.

habe diese Zeilen mal einzeln in eine Batch kopiert und laufen lassen,
da hat sich gezeigt das die Reihenfolge in der zweiten Zeile entscheidend ist ??

set host1=192.168.0.1

ping -n 1 %host1% >nul || goto AAA
geht bei XP einwandfrei, bei W2k kommt die Meldung
"Host 192.168.0.1 ignored".
Deshalb wohl auch keine Unterscheidung möglich
ob IP vorhanden oder nicht.



W2k will die Reihenfolge so haben;

set host1=192.168.0.1

ping %host1% -n 1 >nul || goto AAA
dann geht's.

Merkwürdiger Unterschied der zwei MS...

Dachte mir die Erklärung bin ich euch schuldig

Danke an euch, und ein entspanntes Wochenende.
Grüße langer
Bitte warten ..
Mitglied: superboh
26.11.2005 um 12:10 Uhr
Hi langer,

freut mich zu hören dass es klappt.
Allerdings ist mir echt unklar, warum das bei Dir so rumzickt. Bei mir geht es doch ohne Änderung auch auf Win2000 und WinXP.

Naja, nicht fragen, nicht wundern, einfach akzeptieren

Gruss,
Thomas
Bitte warten ..
Mitglied: Biber
27.11.2005 um 17:41 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Netzwerkgrundlagen
gelöst Ping im gleichen Rechnernetz ohne Gateway möglich? (8)

Frage von CHRISTI4N zum Thema Netzwerkgrundlagen ...

Entwicklung
Ping per Lua Script (1)

Frage von fuddel18 zum Thema Entwicklung ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (22)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...