meneck
Goto Top

Ping-Batch Problem, welche Werte gibt W2K Server zurück?

Hallo allerseits.
Ich habe ein kleines Problemchen bei der Erstellung einer Batchdatei, bzw vielmehr den unterschiedlichen Rückgabewerten von XP und W2K Server.
Da wir momentan an einem unserer Linux Server ein Problem haben (Ja, auch das gibt es) und dieser in unregelmäßigen Abständen abstürzt wollte ich "auf die schnelle" eine kleine Ping-Batch Datei erstellen die in gewissen Abständen einen Ping Befehl auf den besagten Server schickt und bei einem Ausfall eine SMS auf mein Bereitschaftshandy schickt.
Soweit so gut, alles zusammengeschrieben (Auf meiner XP WS), kappte auch.
Nun die Datei rüber auf den W2K Server, auf dem ich die Bat gerne laufen hätte und was ist?
Richtig, sie tut es nicht mehr, das heißt W2K liefert irgendwelche anderen Werte (Wenn überhaupt?) zurück als XP, kann mir vieleicht einer von euch weiterhelfen oder einen Tipp geben?
Bei dem Serverbetriebssystem handelt es sich wie bereits gesagt um ein Windows 2000 Server mit aktuellstem SP und Updates.
Hier der Code der Batch Datei:

:START
ping X.X.X.X >>ping.txt
if %errorlevel% == 0 (goto 2)
echo ==============================>>ping.txt

goto 1

:1
echo Keine Erreichbarkeit Liserv3: >>ping.txt
echo %date% >>ping.txt
echo %time% >>ping.txt

setlocal

set Empfaenger=01712345678@T-D1-SMS.de
set Absender=Absender@Adresse.de
set Betreff="Ausfall Linux Server"  

rem Mail verschicken
blat \\Servername\Verzeichnis\ServerAusfall.txt -to %empfaenger% -server X.X.X.X -i %absender% -f %absender% -s %betreff%

endlocal

:2
sleep 10
goto START


Auch für andere Lösungsansätze habe ich natürlich immer ein offnes Ohr!
Ich könnte natürlich auch einfach alles in eine Log schreiben lassen und dann wiederum diese Log durchsuchen und auswerten lassen, aber das ist meiner Meinung nach nicht gerade die schönste Lösung.

Schonmal vielen dank für die Hilfe.
Wünsche euch noch einen schönen Arbeitstag.

mfg
Marco

Content-Key: 48038

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

Printed on: April 23, 2024 at 16:04 o'clock

Member: bastla
bastla Jan 05, 2007 at 11:41:33 (UTC)
Goto Top
Hallo MeNeCK und willkommen im Forum!

W2000 scheint tatsächlich etwas seltsame Errorlevel beim Ping zu liefern - als Alternative wurde irgendwann hier im Forum hrPING genannt.

HTH
bastla
Member: Biber
Biber Jan 05, 2007 at 12:00:05 (UTC)
Goto Top
Moin MeNeCK,

einige der von M$ ausgelieferte Ping.exe-Versionen haben den Bug das Feature das Verhalten, dass kein verwertbarer Errorlevel gesetzt wird. War bei Win NT mal so, bei frühen W2K-Versionen, bei XP dann wieder nicht...

However, wenn der Errorlevel nicht direkt verwertbar ist, musst Du über Bande spielen und nach dem Vorkommen einen bestimmten Strings in der Text-Rückgabe der Ping.exe suchen.
Dazu wird oft empfohlen:
ping X.X.X.X|find "Antwort">nul || echo Server X.X.X.X nicht erreichbar   
-oder-
ping X.X.X.X|find "Reply">nul || echo Server X.X.X.X nicht erreichbar   
- da es die Ping ja in sprachabhängigen Varianten gibt.
Ich empfehle die sprachunabhängige Prüfung auf den String "100%", der auch in einer mexikanischen oder chinesischen Ping.exe auftuchen wird, wenn 100% der Versuche in die Grütze gegangen sind.
:SleepAndTryAgain
Sleep 10
ping X.X.X.X|find "100%">nul && goto NoPingResponse  
:: hier normal weiter.... Server antwortet...
...
goto SleepAndTryAgain

:NoPingResponse
echo %date% %time% Server X.X.X.X nicht erreichbar  >>ping.txt 
....
goto SleepAndTryAgain

Gruß
Biber
Member: MeNeCK
MeNeCK Jan 05, 2007 at 12:28:37 (UTC)
Goto Top
Das sieht doch schon sehr gut aus.

Ich danke dir Biber, mit dem String hats problemlos geklappt.
Ich vermutete auch erst einen Fehler in der Ping.exe den du mir oben auch "bestätigt" hast, nur hat es mich sehr verdutzt, dass es auch unter einem meiner W2K3 Server nicht funktioniert hat (Inkl Sp1 und Updates).

Aber nungut, seis drum, es klappt wie es soll, danke nochmal!
Hier für die "Nachwelt" nochmal der Code wie man eine solche Batch Datei gestalten kann:
:Start
REM Starten des Pingbefehls auf Server 
ping 192.168.0.0|find "100%">nul && goto Error  
Sleep 60
goto Start


:Error
REM Schreiben einer ErrorLog Datei
echo Keine Erreichbarkeit Liserv3: >>Serverausfall.txt
echo %date% >>Serverausfall.txt
echo %time% >>Serverausfall.txt


setlocal

set Empfaenger=017123456789@T-D1-SMS.de
set Absender=Meine.Adresse@Firma.de
set Betreff="Ausfall Server XYZ"  

REM Versenden der Mail an Bereitschaftshandy
blat \\Server\Verzeichnis\TextDerMail.txt -to %empfaenger% -server Exchangeserver -i %absender% -f %absender% -s %betreff%

endlocal
Sleep 60
goto Start

Na dann .... danke für die Hilfe und das nette aufnehmen.

mfg
Marco
Member: geTuemII
geTuemII Jan 05, 2007 at 14:10:28 (UTC)
Goto Top
Hallo MeNeCK, moin Biber,

ich halte die Abfrage 100% für suboptimal, da ihr so evtl. bei hoher Netzwerklast eine Server-Ausfall-Mail bekommt. Und das ist doch nicht im Sinne des Erfinders, oder?

Was spricht eigentlich gegen die sprachabhängige ODER-Abfrage?

set pingok=1

ping X.X.X.X|find "Antwort">nul || set pingok=0  
ping X.X.X.X|find "Reply">nul ||  set pingok=0  

if (pinkgok)==(0) (echo Server X.X.X.X nicht erreichbar)

@Biber: Nimm das bitte mal als Vorschlag (und dich der Syntax an face-wink )

geTuemII
Member: Biber
Biber Jan 05, 2007 at 14:59:19 (UTC)
Goto Top
Moin geTuemII,
ich halte die Abfrage 100% für suboptimal
Ist ja auch nur ein Batch, kein Satellitensteuerungsprogramm....

Die "100%", die ich prüfe, werden nur und ausschließlich angezeigt als (dt. Version) "100% Verlust", was nur vorkommt, wenn alle gesendeten Datenpakete in die Tonne statt an den Server gesendet werden.
Beispiel für existierenden und erreichbaren Server wäre
$cmd$ping /n 1 www.russenschlampen.de

Ping www.russenschlampen.de [217.111.100.215] mit 32 Bytes Daten:

Antwort von 217.111.100.215: Bytes=32 Zeit=35ms TTL=55

Ping-Statistik für 217.111.100.215:
    Pakete: Gesendet = 1, Empfangen = 1, Verloren = 0 <b>(0% Verlust),</b>
Und "100% Verlust" kann -unabhängig von der Netzwerklast- wirklich nur bei Nicht-Erreichbarkeit im Text enthalten sein.
Du bist wahrscheinlich von einer Prüfung auf "100% Erfolg" ausgegangen - in dem Fall würde ich Dir Recht geben.

Gruß
Biber
P.S. Zu Deiner Syntax:
Mein Beispiel mit der chinesischen Ping.exe hat Dich vielleicht nach Südost-Asien versetzt...
if (pinkgok)==(0) ...
Bangkok kenn ich (vom Namen her), aber pingkok... auch so eine schwäbische Spezialität?
if (%pingok%)==(0) ...
[Edit]
Außerdem: Wenn er eine "deutsche" Ping-Version im Einsatz hat, dann geht es schief:
ping X.X.X.X|find "Antwort">nul || set pingok=0  
REM "Antwort" hat er gefunden.. %pingok% bleibt, wie es war...  
ping X.X.X.X|find "Reply">nul ||  set pingok=0  
REM ...aber "Reply" wird er NIEMALS finden... und setzt jetzt den %pingok% auf 0....<i>Works as designed..</i>  
[/Edit]
Member: geTuemII
geTuemII Jan 05, 2007 at 17:31:54 (UTC)
Goto Top
Hallo Biber,

Ist ja auch nur ein Batch, kein Satellitensteuerungsprogramm....

was? Ich dachte, mit weniger gibst du dich gar nicht ab?

Die "100%", die ich prüfe, werden nur und ausschließlich angezeigt
als (dt. Version) "100% Verlust"

Du hast völlig recht, das war mir völlig entgangen...

Ping www.russenschlampen.de

Ich liebe deine Beispiele ;)

Du bist wahrscheinlich von einer Prüfung auf "100% Erfolg"
ausgegangen -

- die aber so gar niemals nicht angezeigt wird --> Ich ziehe meinen Beitrag vollinhaltlich zurück!

Mein Beispiel mit der chinesischen Ping.exe hat Dich vielleicht nach Südost-Asien
versetzt...

Schön wärs, nach 2 Wochen Urlaub bin ich urlaubsreif...

[Bangkok vs. pingkok -- schwäbische Spezialität?]
<beiseite> Irgendwann krieg ich ihn wegen dieser Quotenmarderei! </beiseite>
Lieber Biber, du weißt doch, daß das eher Maultaschen und Spätzle sind (und noch ein paar andere Sachen, die wir aber vor so auswärtigen lieber geheim halten).

Außerdem: Wenn er eine "deutsche" Ping-Version im Einsatz
hat, dann geht es schief:

Ich wußte doch, warum du drüberlesen solltest <ginz>

geTuemII
Member: Biber
Biber Jan 05, 2007 at 17:55:24 (UTC)
Goto Top
@geTuemII
<ginz>
Immer noch gedanklich in Südost-Asien? Und muss es dann nicht <glinz> heißen?
Ich liebe diesen schwäbischen Dialekt...
[Ich hoffe, wenn ich weiter so charmant bin, bekomm ich bestimmt ein paar Maultaschen,,,]

Schönen Abend und liebe Grüße aus Bremen
Biber