Hallo zusammen,
ich bin doch etwas neu im Erstellen von BATCH-Dateien unter Windows und habe ein kleines Problem....
Generell zu meiner Aufgabenstellung:
Ich habe zwei SPS'n, die über ihre IP-Adresse für mich im VPN erreichbar sind. Hier läuft eine kleine Visualisierung.
Die SPS'n sind redundant aufgebaut, sodass es immer einen Master und einen Slave gibt. Beim Start meiner Visualisierung gibt es eine Startseite. Diese Seite überprüft dann, wer Master und wer Slave ist und schaltet auf die Korrekte Seite um. Danach steuert sich das System selber.
Leider funktioniert das nur, so lange die Applikation bzw. die SPS selbst läuft.
Deshalb möchte ich nun feststellen, ob nun die eine oder andere IP-Adresse nicht erreichbar ist und auf die Startseite umschalten. Diese überprüft dann wieder alles.
Zusätzlich möchte ich überprüfen, wie der aktuelle Applikationsstatus ist. Dies kann über Abfrage einer Textdatei realisiert werden.
Generell hat das Umschalten schon mal funktioniert... ich hab dann das mit dem überprüfen des Applikationsstatus noch mit dazu gemacht, seit dem Arbeitet die Batch nicht mer ganz durch und bricht irgendwo ab... könnt Ihr mir helfen den Fehler zu finden?
@echo off
Title ping check
set ipnetz=192.168.1
set serverip1=150
set serverip2=151
set interval=10
set ip1error=0
set ip2error=0
:Pinginterval
for /F %%I in ('curl http://%ipnetz%.%serverip1%:8080/webserver-state.txt') do (set state1=%%I)
echo %state1%
pause
if "%state1%" == "AppState=2" (
if not %ip1error%==1(
GOTO Error1
)
)
if "%state1%" == "AppState=1" (
set ip1error=0
)
for /F %%I in ('curl http://%ipnetz%.%serverip2%:8080/webserver-state.txt') do (set state2=%%I)
echo %state2%
if "%state2%" == "AppState=2" (
if not %ip2error%==1(
GOTO Error2
)
)
if "%state2%" == "AppState=1" (
set ip2error=0
)
ping %ipnetz%.%serverip1% -n 2 -w 1000 -l 2000
if %errorlevel%==1 if not %ip1error%==1 (
:Error1
set ip1error=1
taskkill /f /t /im chrome.exe
start C:\Programmier\chrome-win\chrome.exe "file:///C:/Users/ortc/Desktop/Test/WebVisuR2.html"
)
ping %ipnetz%.%serverip1% -n 2 -w 1000 -l 2000
If %errorlevel%==0 (
set ip1error=0
echo "error1level0
)
echo Error of ip 1 = %ip1error%
ping %ipnetz%.%serverip2% -n 2 -w 1000 -l 2000
if %errorlevel%==1 if not %ip2error%==1 (
:Error2
set ip2error=1
taskkill /f /t /im chrome.exe
start C:\Programmier\chrome-win\chrome.exe "file:///C:/Users/ortc/Desktop/Test/WebVisuR2.html"
)
ping %ipnetz%.%serverip2% -n 2 -w 1000 -l 2000
If %errorlevel%==0 (
set ip2error=0
echo "error2level0"
)
echo Error of ip 2 = %ip2error%
timeout %interval%
Wäre dankbar für Hilfe!
Gruß Chris