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-ID: 299377

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

Ausgedruckt am: 23.11.2024 um 22:11 Uhr

127944
Lösung 127944 17.03.2016 um 16:15:18 Uhr
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
Citytow
Citytow 17.03.2016 um 16:17:38 Uhr
Goto Top
Super :D Werde ich gleich mal Ausprobieren

Danke Edzard
114757
114757 17.03.2016, aktualisiert am 18.03.2016 um 09:28:49 Uhr
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
127944
127944 18.03.2016 um 09:02:14 Uhr
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.
114757
114757 18.03.2016 aktualisiert um 09:21:24 Uhr
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
127944
127944 18.03.2016 aktualisiert um 09:26:47 Uhr
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
114757
114757 18.03.2016 aktualisiert um 09:31:10 Uhr
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