# WAN Verfügbarkeit via Batch und ping testen - Probleme mit der Auswertung



## Muckel1986 (30. September 2009)

Guten Abend zusammen,

in meinem Ausbildungsbetrieb gibt es das Problem, dass das Internet welches (leider) eine andere IT-Firma betreut kaum verfügbar ist. Da eine kaufmännische Abteilung nun Sachen über das Internet versteigern sollen, brauchen sie einen funktionierenden Internet-Zugang. Jener wird über den Internen Server aufgebaut. Wenn er (bzw. seine Firewall) funktioniert, wird man bei'm aufrufen einer Webseite auf die Firewallseite gelenkt und muss dort seinen Benutzernamen und Passwort eingeben und dann kommt man auf die angeforderte Seite. Auch im Fehlerfall funktioniert die anmeldung, aber Webseiten sind nicht erreichbar.

Nun habe ich die Aufgabe bekommen, dass ganze mit Windows eiegnen Mitteln zu dokumentieren. Zu diesem Zweck habe lade ich bei'm Windowsstart eine *.vbs Datei, die wiederum eine *.bat aufruft, in der das eigentliche Script ist. Eine zweite *.vbs Datei habe ich für die Wiederholungszeit genommen. Mit der *.bat Datei führe ich nun drei pings durch:
internen Server
google.de
chip.de
 Und leere dann den DNS-Cache des Clients, damit man nicht sagen kann, dass es am Client liegt.

Für jeden ping-Befehl habe ich eine Variable mit dem errorlevel bestimmt. Am Ende der *.bat Datei möchte ich dann getreu dem Grundsatz "wenn dann sonst" eine "Statusmeldung" in die fehler.txt oder in die erfolg.txt schreiben. Doch genau dabei gibt es noch Probleme.

Zwar wird eine ping.txt gestellt in die ich mir den ping-Befehl ausgeben lasse, aber die if-Bedingungen klappen danach nicht. Eine fehler.txt wird zwar erstellt, aber keine erfolg.txt. Meine *.bat schaut zurzeit so aus:


```
@ECHO OFF
cd C:\
cd C:\ueberwachung
md C:\ueberwachung\ergebnis\
:ueberwachung
REM Zeitverzoegertes wiederholen
wscript warten.vbs

REM Datum und Zeit in das Format xx.xx.xxxx xx:xx:xx einrichten
set datum=%date:~0%
set zeit=%time:~0,8% 

REM PING zu der IP des "BBW Servers"
ping -n 1 10.10.10.1 >> C:\ueberwachung\ergebnis\ping.txt
	REM Errorlevel in eine Variable speichern
	set BBW=%errorlevel%

REM PING zu der IP des "www.google.de"
ping -n 1 www.google.de >> C:\ueberwachung\ergebnis\ping.txt
	REM Errorlevel in eine Variable speichern
	set GOOGLE=%errorlevel%

REM PING zu der IP des "www.chip.de"
ping -n 1 www.chip.de >> C:\ueberwachung\ergebnis\ping.txt
	REM Errorlevel in eine Variable speichern
	set CHIP=%errorlevel%

REM leeren des DNS-Caches um zu gefährleisten, dass es nicht am Client liegt
ipconfig /flushdns >> C:\ueberwachung\ergebnis\ping.txt

if "%BBW%" == 1 ( echo "%datum% %zeit% BBW-Server erfolgreich" >> C:\ueberwachung\ergebnis\erfolg.txt )
	ELSE ( echo "%datum% %zeit% BBW-Server fehlerhaft" >> C:\ueberwachung\ergebnis\fehler.txt )

if "%GOOGLE%" == 1 ( echo "%datum% %zeit% GOOGLE-Server erfolgreich" >> C:\ueberwachung\ergebnis\erfolg.txt )
	ELSE ( echo "%datum% %zeit% GOOGLE-Server fehlerhaft" >> C:\ueberwachung\ergebnis\fehler.txt )

if "%CHIP%" == 1 ( echo "%datum% %zeit% CHIP-Server erfolgreich" >> C:\ueberwachung\ergebnis\erfolg.txt )
	ELSE ( echo "%datum% %zeit% CHIP-Server fehlerhaft" >> C:\ueberwachung\ergebnis\fehler.txt )

cls
goto ueberwachung
```

Hoffe ihr könnt mir dabei helfen, denn das Script sollte morgen eigentlich starten.
Vielen Dank
Muckel


----------



## deepthroat (30. September 2009)

Hi.

Der String *"1"* ist natürlich nicht gleich *1*.


```
if %GOOGLE% equ 1 (
  echo ...
) else (
  echo 
)
```
Aber warum in aller Welt machst du das denn nicht gleich in VBScript, das ist doch viel einfacher?

Gruß


----------



## Muckel1986 (1. Oktober 2009)

Guten Morgen,

das Problem ist gelöst und funktioniert nun. Eine ausführliche Erklärung gibt es in meinem kleinen Wiki. Die Hauptdatei hat folgenden Quellcode: 
	
	
	



```
@ECHO OFF 
CD /D C:\ueberwachung 
MD %CD%\ergebnis\ 
SET FileOK=%CD%\ergebnis\erfolg.txt 
SET FileER=%CD%\ergebnis\fehler.txt 
SET FilePI=%CD%\ergebnis\ping.txt 
:ueberwachung 
REM Zeitverzoegertes wiederholen 
wscript warten.vbs 
REM Datum und Zeit in das Format xx.xx.xxxx xx:xx:xx einrichten 
SET datum=%date:~0% 
SET zeit=%time:~0,8%  

ECHO PING zu der IP des "BBW Servers" >> %FilePI% 
PING -n 1 10.10.10.1 >> %FilePI% 
REM Errorlevel in eine Variable speichern 
SET BBW=%errorlevel% 

ECHO PING zu der IP des "www.google.de" >> %FilePI% 
PING -n 1 www.google.de >> %FilePI% 
REM Errorlevel in eine Variable speichern 
SET GOOGLE=%errorlevel% 

ECHO PING zu der IP des "www.chip.de" >> %FilePI% 
PING -n 1 www.chip.de >> %FilePI% 
REM Errorlevel in eine Variable speichern 
SET CHIP=%errorlevel% 

REM leeren des DNS-Caches um zu gefährleisten, dass es nicht am Client liegt 
ipconfig /flushdns >> %FilePI% 

REM Abschließen der Datei
ECHO. >> %FilePI%
ECHO ------------------------------------------------------------ >> %FilePI%
ECHO. >> %FilePI%
REM Fehlerauswertung 
IF %BBW% == 0 ( echo %datum% %zeit% BBW-Server erfolgreich >> %FileOK% ) ELSE ( echo %datum% %zeit% BBW-Server fehlerhaft >> %FileER% ) 
IF %GOOGLE% == 0 ( echo %datum% %zeit% GOOGLE-Server erfolgreich >> %FileOK% ) ELSE ( echo %datum% %zeit% GOOGLE-Server fehlerhaft >> %FileER% ) 
IF %CHIP% == 0 ( echo %datum% %zeit% CHIP-Server erfolgreich >> %FileOK% ) ELSE ( echo %datum% %zeit% CHIP-Server fehlerhaft >> %FileER% ) 
cls 
goto ueberwachung
```

die Datei aufruf.vbs

```
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "ueberwachung.bat",0,True
```

und die warten.vbs

```
REM Zeit für die Wiederholung in Milisekunden
wscript.sleep(60000)
REM Zeitangaben
REM eine Minute: 60000
REM halbe Minute: 30000
```

Die drei Datei "Überwachen" nun die Verfügbarkeit des Internets. Zu diesem Zweck wird eine fehler.txt und eine erfolg.txt erstellt in der dann jeweils die Erfolgs- oder Misserfolgsmeldung steht. Zusätzlich gibt es noch die ping.txt in der die Ergebnisse der jeweiligen PING-Befehle zu lesen sind, jene Datei wird eigentlich nicht benötigt und wurde nur angelegt, damit wir bei uns Intern noch weitere Aussagekräftigere Informationen haben.

Viel Vergnügen mit dem Script
Muckel/Tobias


----------

