Archiv verlassen und diese Seite im Standarddesign anzeigen : Batchdatei - Computer anpingen?
Weyoun
2005-01-09, 18:02:00
Hallo,
ich möchte mittels einer Batchdatei einen Computer anpingen, um zu sehen, ob er noch eingeschaltet ist. Wenn der Ping nicht mehr zurückkommt "Zeitüberschreitung der Anforderung", möchte ich dass er eine bestimmte Aktion ausführt z. B. start xy.exe
So habe ich mir das ungefähr vorgestellt:
-------------------------
ping 192.168.0.205
if not errorlevel 0 start %SystemRoot%\system32\notepad.exe
-------------------------
Leider bedeutet errorlevel 0 nicht, dass da nichts zurückommt, sondern, dass erfolgreich gepingt wurde. Dem Computer ist es egal ob die Gegenstelle nicht antwortet.
MfG,
Weyoun
PS: Die Batchdatei ist natürlich viel größer (ca 15 Zeilen), aber ich denke, der Rest tut nichts zur Sache.
Sephiroth
2005-01-09, 18:32:09
ping 192.168.0.1
echo errorcode1: %errorlevel%
ping 192.168.0.254
echo errorcode2: %errorlevel%
%errorlevel% ist 1, wenn host nicht erreichbar und 0, wenn ping geklappt hat.
so jedenfalls bei mir auf winxp sp2
Weyoun
2005-01-10, 09:42:03
Dann habe ich den Fehler gefunden... Auf einem Windows geht es, auf dem anderem (Windows 2000) gibt er nur errorlevel 0 aus.
C:\>ping 192.168.0.206
Ping wird ausgeführt für 192.168.0.206 mit 32 Bytes Daten:
Zeitüberschreitung der Anforderung.
Zeitüberschreitung der Anforderung.
Zeitüberschreitung der Anforderung.
Zeitüberschreitung der Anforderung.
Ping-Statistik für 192.168.0.206:
Pakete: Gesendet = 4, Empfangen = 0, Verloren = 4 (100% Verlust),
Ca. Zeitangaben in Millisek.:
Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms
C:\>echo errorcode1: 0
errorcode1: 0
C:\>ping 192.168.1.254
Ping wird ausgeführt für 192.168.1.254 mit 32 Bytes Daten:
Zeitüberschreitung der Anforderung.
Zeitüberschreitung der Anforderung.
Zeitüberschreitung der Anforderung.
Zeitüberschreitung der Anforderung.
Ping-Statistik für 192.168.1.254:
Pakete: Gesendet = 4, Empfangen = 0, Verloren = 4 (100% Verlust),
Ca. Zeitangaben in Millisek.:
Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms
C:\Unimatrix002>echo errorcode2: 0
errorcode2: 0
C:\Unimatrix002>pause
Drücken Sie eine beliebige Taste . . .
Sephiroth
2005-01-10, 12:04:20
Vielleicht solltest Du das ganze mit einem VBScript machen. Da kenn ich eine recht zuverlässige Methode, wie man mittels Ping prüfen kann, ob der PC erreichbar ist oder nicht.
Was hast Du denn alles vor?
Weyoun
2005-01-10, 16:18:24
Vielleicht solltest Du das ganze mit einem VBScript machen. Da kenn ich eine recht zuverlässige Methode, wie man mittels Ping prüfen kann, ob der PC erreichbar ist oder nicht.
Was hast Du denn alles vor?
Gegen VB Script habe nichts einzuwenden - denn das lerne ich zurzeit.
Es soll im übrigen eine einfache Abfrage sein, die im Netzwerk in bestimmten Zeitintervallen checkt. Wenn z. B. alle Rechner aus sind (Ping wird nicht beantwortet), soll er z. B. einige Programme ausführen. Diente auch eher mehr dem Verständnis der Batchfunktionen als dem Nutzen. Verstanden habe ich es jetzt soweit, nur auf Windows 2000 SP4 funktioniert es aus irgend einem Grund nicht und gerade dort würde mir so eine Automatisierung helfen sein.
MfG,
Weyoun
Sephiroth
2005-01-10, 17:59:35
Gegen VB Script habe nichts einzuwenden - denn das lerne ich zurzeit.
Es wird ein (reicht völlig aus) Ping an das Zeil geschickt und nachgeprüft, ob in der Ausgabe die Bezeichnung TTL auftaucht, welche ein Hinweis auf einen erfolgreichen Ping ist.
FUNCTION PingTest(IP)
Set oExec = WSHShell.Exec("%comspec% /c Ping " & IP & " -n 1 -w 500" )
DO WHILE NOT oExec.StdOut.AtEndOfStream
input = input & oExec.StdOut.Read(1)
LOOP
PingTest = false
IF InStr(input,"TTL=") <> 0 THEN
PingTest = true
END IF
END FUNCTION
Bei Set oExec eine Unterscheidung machen, ob es sich um Win9x oder WinNT handelt, falls Win9x zum Einsatz kommt und dann eben den Befehl entsprechend ändern.
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.