- Laufwerke in Abhängigkeit des Standortes verbinden
- Funktionen je nach Verfügbarkeit bereitstellen
oder eben
- warnen, wenn die VPN ausfällt
Bei uns ist das so, dass die Standorte via VPN gegenseitig verfügbar sein sollen und uns die Jungs von der "IT" einen Router hingestellt haben, der das zwar tut, aber alle Nase lang neu gestartet werden muss. Mich nervt das, weil mich der Internetausfall durch den Routerneustart regelmäßig unvorbereitet trifft.
Wie schön wäre es doch, wenn ich mich selbst wenigstens vorwarnen könne?
Kann ich - mach ich - mit Batch.
Beep mit Batch
Schwierigkeit 1 ist, dass es eine BEEP.EXE o.ä. nicht mehr gibt. Die könnte man zwar aus WinXP extrahieren, aber wer will das schon. Also mit Boardmitteln:Leider muss man hier ein wenig tricksen, weil wir ein nichtdruckbares Zeichen benutzen wollen, welches wir nicht so ohne weiteres eingeben können. Aber so geht's:
cmd öffnen, dann nacheinander folgende Befehle eingeben und jeweils mit der ENTER-Taste abschließen:
1 2 3 | copy con beep.bat
echo ^G
^Z
|
(Das ^G erhaltet ihr, indem ihr die Tasten [Strg + G] drückt.)
Jetzt haben wir schon mal eine BEEP.BAT, die Windows dazu veranlasst, dass ein Standardton ausgegeben wird.
Schön und funktional
Der Eintrag in der BEEP.BAT sieht richtigerweise so aus:Den Eintrag kopieren wir in eine funktionale BATCH:
:Start @echo off rem Ping-Test mit Warnton auf Verfuegbarkeit der VPN set ipziel=192.168.168.168 set Minute=%time:~4,1%
cls echo. echo. echo. echo. echo. echo. echo --------------------------------------- echo. echo Es ist: echo. echo %time:~0,8% echo. echo --------------------------------------- ping -n 1 localhost > NUL :Ping ping %ipziel% -n 2 -w 1000 -l 128|findstr "berschreitung" if %errorlevel%==0 goto Fehler if %Minute% == 0 goto Bild goto Start :Fehler echo. echo. echo !!!! Achtung: die VPN ist offline !!!! echo timeout 2 >> NUL echo Die IP: %ipziel% ist nicht erreichbar! echo timeout 2 >> NUL echo timeout 20 >> NUL goto Start :Bild for /L %%A IN (1,1,14) DO call PingPong_PIC.bat cls goto Start :Ende
Zur Erläuterung:
set ipziel=192.168.200.158
hier wird eine Variable mit der Ziel-IP deklariert
set Minute=%time:~4,1%
hier wird eine Variable deklariert, die die 5. Stelle (es beginnt mit "0") der Uhrzeit auswirft. Das benutzen wir später, um die Anzeige etwas aufzulockern
wirft die aktuelle Uhrzeit aus, aber nur von der 0. Stelle und davon 8 Zeichen
ping -n 1 localhost > NUL
ist nur davor da, dass die Anzeige einen Augenblick sichtbar ist
ping %ipziel% -n 2 -w 1000 -l 128|findstr "berschreitung"
das ist der eigentliche PING-Befehl: zwei Pakete mit 1 KB, einer Antwortdauer von 128 ms
hinter dem Pipe wird der Output auf die Zeichenfolge "berschreitung" geprüft. Das nutzen wir, um einen Errorlevel zu bekommen (0 = erfolgreich), und dadurch den Fehler des Pings von dessen Erfolg unterscheiden zu können.
if %errorlevel%==0 goto Fehler
wenn also in der Rückgabe des Pings die Zeichenkette "berschreitung" gefunden wird, ist der Errorlevel erfolgreich und das Programm springt zur Sprungmarke ":Fehler"
if %Minute% == 0 goto Bild
wenn Errorlevel nicht 0 (also 1) ist, dann ist alles in Ordnung. Hier prüfen wir ab, ob die Minute eine Zehner-Minute ist (10 oder 20 oder 30 oder ...). Wenn ja, dann springe zur Sprungmarke ":Bild".
echo BEL
timeout 2 >> NUL
in der Sektion ":Fehler" wird nun das o.a. BEEP ausgegeben. Damit es auch hörbar ist, ergänzen wir es um einen timeout-Befehl.
Übrigens nutze ich für die Anzeige von Quellcode http://hilite.me/. Leider kann hilite.me mit nichtdruckbaren Zeichen nicht umgehen und zeigt nur ein " " an...
for /L %%A IN (1,1,14) DO call PingPong_PIC.bat
in der Sektion ":Bild" rufen wir eine PINGPONG_PIC.BAT auf, die wiederum nichts anderes tut, als ein ASCII-Art anzuzeigen. Bei mit sind das eine Abfolge von Bildern, die insgesamt eine ASCII-Animation ergeben. Das beschäftigt den Prozessor witzigerweise enorm, sodass ich ihm diesen Auslauf nur aller 10 Minuten gönne (siehe die Bedingung mit der Variable %Minute%).
goto Start
Tja und die verteilten Sprungmarken zurück verhelfen uns, dass wir immer wieder von vorn beginnen können.
Keine Kommentare:
Kommentar veröffentlichen