citytow
Goto Top

Wenn Abfrage mit PS oder Batch

Hallo Liebe Community,
hat einer von euch eine Idee, wie man eine WENN Abfrage in einer PS oder Batch abfrage Scriptet ?

Hintergrund :

Wir haben eine VPN, die Ständig Gepingt wird. Nun soll das Script, wenn der Ziel Host nicht Erreichbar ist ist eine EXE Datei ausführen.

Lg Citytow

Content-Key: 299377

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

Printed on: April 24, 2024 at 21:04 o'clock

Mitglied: 127944
Solution 127944 Mar 17, 2016 at 15:15:18 (UTC)
Goto Top
Sowas in der Art?

@echo off
ping -n 1 IP-Adresse
if errorlevel 1 goto FEHLER 
if errorlevel 0 goto geht

:FEHLER
*.exe -Parameter

:geht
Member: Citytow
Citytow Mar 17, 2016 at 15:17:38 (UTC)
Goto Top
Super :D Werde ich gleich mal Ausprobieren

Danke Edzard
Mitglied: 114757
114757 Mar 17, 2016, updated at Mar 18, 2016 at 08:28:49 (UTC)
Goto Top
Moin zusammen.

Zitat von @127944:

Sowas in der Art?

@echo off
> ping -n 1 IP-Adresse
> if errorlevel 1 goto FEHLER 
> if errorlevel 0 goto geht
> 
Achtung: Das funktioniert definitiv nicht!

Ping gibt keinen auswertbaren Errorlevel zurück!

Machst du mit Powershell oder Batch wie ich hier schon sehr oft beschrieben habe:
Netzwerkstatus

Batch
wmic PATH Win32_PingStatus where Address='8.8.8.8' get StatusCode /format:list |find "StatusCode=0" >nul && echo Internet OK || echo Internet nicht OK  
oder auch mit Powershell
if (!(Test-Connection "8.8.8.8" -Count 1 -Quiet)){  
    write-host "Internet nicht verbunden!"  
    # hier Programm starten
} else {
   write-host "Internet ist erreichbar"  
}
Gruß jodel32
Mitglied: 127944
127944 Mar 18, 2016 at 08:02:14 (UTC)
Goto Top
Zitat von @114757:

Ping gibt keinen auswertbaren Errorlevel zurück!

Doch. Bei einem Fehler ist der 1 - anderfalls kleiner 0. Letzteres habe ich tatsächlich in meinem Codebeispiel unterschlagen. Würde in seinem Fall trotzdem funktionieren.
Mitglied: 114757
114757 Mar 18, 2016 updated at 08:21:24 (UTC)
Goto Top
Zitat von @127944:

Zitat von @114757:

Ping gibt keinen auswertbaren Errorlevel zurück!

Doch. Bei einem Fehler ist der 1 - anderfalls kleiner 0. Letzteres habe ich tatsächlich in meinem Codebeispiel unterschlagen. Würde in seinem Fall trotzdem funktionieren.
Und nochmal NEIN, das Auswerten des Errorlevels geht bei Ping nicht !!!! Denn es liefert keinen zuverlässigen mit dem Verbindungszustand übereinstimmenden Errorlevel zurück. Glaub es mir, my friend face-wink, ich mach das nicht erst seit gestern. Kannst du übrigens auch in diversen Threads hier nachlesen!

Guckst du hier (Host nicht erreichbar aber Errorlevel trotzdem 0 !!):
C:\Windows\system32>ping 192.168.1.2

Ping wird ausgeführt für 192.168.1.2 mit 32 Bytes Daten:
Antwort von 192.168.1.10: Zielhost nicht erreichbar.
Antwort von 192.168.1.10: Zielhost nicht erreichbar.
Antwort von 192.168.1.10: Zielhost nicht erreichbar.
Antwort von 192.168.1.10: Zielhost nicht erreichbar.

Ping-Statistik für 192.168.1.2:
    Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0
    (0% Verlust),

C:\Windows\system32>echo %errorlevel%
0
Mitglied: 127944
127944 Mar 18, 2016 updated at 08:26:47 (UTC)
Goto Top
Shit - habe soeben exakt den selben Test gemacht. du hast Recht - und ich wieder was - trotz >15 Jahren Erfahrung - dazu gelernt face-smile
Mitglied: 114757
114757 Mar 18, 2016 updated at 08:31:10 (UTC)
Goto Top
Zitat von @127944:
Shit - habe soeben exakt den selben Test gemacht. du hast Recht - und ich wieder was - trotz >15 Jahren Erfahrung - dazu gelernt face-smile
Schön, wieder ein paar Leben gerettet face-smile Hoffe du hast keine produktiven Skripte laufen die auf dem Errorlevel vertrauen face-wink