Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Netzwerküberwachung per Batch Script - Datei ab bestimmter größe Löschen?

Frage Entwicklung Batch & Shell

Mitglied: Muckel1986

Muckel1986 (Level 1) - Jetzt verbinden

29.09.2009 um 09:34 Uhr, 8809 Aufrufe, 13 Kommentare

Erstellung eines Batchscriptes zum ermitteln der Internetverfügbarkeit.

Guten Morgen zusammen,

habe von meine Ausbilder die Aufgabe bekommen ein kleines Batch Script zu schreiben, welches die Verbindung mit dem Internet dokumentiert. Sinn und Zweck ist es in einfacher Form nach zu weißen, wie verfügbar das Internet ist. Grund dafür ist, dass die betreuende IT-Firma es nicht hin bekommt, den synchronen DSL-Zugang über deren Server aufrecht zu erhalten. Da meine Abteilung leider nur die Ausbildungs-PCs betreut, ist das nicht unsere Aufgabe. Ein Ausbildungsbereich soll aber irgendwelche Sachen bei ebay versteigern und benötigt dem zufolge auch ein funktionierendes WAN.

Da die Rechner recht alt sind, sollte keine Software aufgespielt werden, die Ressourcen verbraucht. Daher kam die Aufforderung das ganze mit den Bord eigenen Mitteln zu lösen. Entstanden sind drei Dateien: aufruf.vbs , warten.vbs und ueberwachung.bat . Die erste Datei habe ich als Verknüpfung unter Autostart für alle Benutzer eingebunden, so dass sie automatisch startet. Die Datei ruft dann die ueberwachung.bat auf, in dem erstmal die warten.vbs eingebunden. Jene soll dafür sorgen, dass das Script nur jede Minute (wird noch angepasst) durchlaufen lassen soll.

Die ueberwachung.bat führt dann pings aus. Einen zu dem Internen Server, der für den Internetzugang verantwortlich ist, einen zu google.de und chip.de damit man zwei unterschiedliche Server hat, die i.d.R. "immer" verfügbar sind. Danach folgt noch das leeren des DNS-Chaches, damit man sicher gehen kann, dass es nicht am Client liegt. Aussehen tut das Script bis jetzt so:
01.
@ECHO OFF 
02.
cd C:\ 
03.
cd C:\ueberwachung 
04.
md C:\ueberwachung\ergebnis\ 
05.
: anfang 
06.
wscript warten.vbs 
07.
echo. >> C:\ueberwachung\ergebnis\liste.txt 
08.
echo PING und TRACE Test vom %date% um %time% >> C:\ueberwachung\ergebnis\liste.txt 
09.
echo ------------------------------------------------------ >> C:\ueberwachung\ergebnis\liste.txt 
10.
echo. >> C:\ueberwachung\ergebnis\liste.txt 
11.
REM echo. >> C:\ueberwachung\ergebnis\liste.txt 
12.
REM PING zu der IP des "BBW Servers" 
13.
ping 10.10.10.1 >> C:\ueberwachung\ergebnis\liste.txt 
14.
echo.  >> C:\ueberwachung\ergebnis\liste.txt 
15.
REM PING zu www.google.de 
16.
ping www.google.de >> C:\ueberwachung\ergebnis\liste.txt 
17.
echo. >> C:\ueberwachung\ergebnis\liste.txt 
18.
REM PING zu der festen IP von chip.de 
19.
ping www.chip.de >> C:\ueberwachung\ergebnis\liste.txt 
20.
echo. >> C:\ueberwachung\ergebnis\liste.txt 
21.
REM TRACERT zu www.google.de 
22.
tracert www.google.de >> C:\ueberwachung\ergebnis\liste.txt 
23.
echo. >> C:\ueberwachung\ergebnis\liste.txt 
24.
REM leeren des DNS-Caches um zu gefährleisten, dass es nicht am Client liegt 
25.
ipconfig /flushdns >> C:\ueberwachung\ergebnis\liste.txt 
26.
echo. >> C:\ueberwachung\ergebnis\liste.txt 
27.
echo Ende des Test. >> C:\ueberwachung\ergebnis\liste.txt 
28.
echo. >> C:\ueberwachung\ergebnis\liste.txt 
29.
echo ------------------------------------------------------ >> C:\ueberwachung\ergebnis\liste.txt 
30.
echo ------------------------------------------------------ >> C:\ueberwachung\ergebnis\liste.txt 
31.
cls 
32.
goto anfang
Problem ist nun, dass die Datei in der das Ergebnis geschrieben wird, unendlich groß wird. Daher möchte ich die Datei ab einer bestimmten Größe Löschen. Mein Ansatz dazu schaut so aus:
01.
@ECHO OFF 
02.
cd C:\ 
03.
cd C:\ueberwachung 
04.
md C:\ueberwachung\ergebnis\ 
05.
 
06.
set "Datei=C:\ueberwachung\ergebnis\liste.txt"  
07.
 
08.
wscript warten.vbs 
09.
 
10.
: anfang 
11.
REM Groeße der txt einbeziehen 
12.
IF "%Datei%" == "10MB" GOTO loeschen else GOTO ueberwachung 
13.
 
14.
REM wenn groeßer 
15.
:loeschen 
16.
	DEL C:\ueberwachung\ergebnis\liste.txt 
17.
	GOTO WEITER 
18.
 
19.
REM Das ist nicht mehr bestandteil des IF-Zweiges! 
20.
:WEITER 
21.
	echo Die Datei wurde am %date% neu angelegt, da sie zu groß wurde. >> C:\ueberwachung\ergebnis\liste.txt 
22.
	GOTO ueberwachung 
23.
 
24.
:ueberwachung 
25.
echo. >> C:\ueberwachung\ergebnis\liste.txt 
26.
echo PING und TRACE Test vom %date% um %time% >> C:\ueberwachung\ergebnis\liste.txt 
27.
echo ------------------------------------------------------ >> C:\ueberwachung\ergebnis\liste.txt 
28.
echo. >> C:\ueberwachung\ergebnis\liste.txt 
29.
REM PING zu der IP des "BBW Servers" 
30.
ping 10.10.10.1 >> C:\ueberwachung\ergebnis\liste.txt 
31.
echo.  >> C:\ueberwachung\ergebnis\liste.txt 
32.
REM PING zu www.google.de 
33.
ping www.google.de >> C:\ueberwachung\ergebnis\liste.txt 
34.
echo. >> C:\ueberwachung\ergebnis\liste.txt 
35.
REM PING zu der festen IP von google.com 
36.
ping www.google.com >> C:\ueberwachung\ergebnis\liste.txt 
37.
echo. >> C:\ueberwachung\ergebnis\liste.txt 
38.
REM TRACERT zu www.google.de 
39.
tracert www.google.de >> C:\ueberwachung\ergebnis\liste.txt 
40.
echo. >> C:\ueberwachung\ergebnis\liste.txt 
41.
REM leeren des DNS-Caches um zu gefährleisten, dass es nicht am Client liegt 
42.
ipconfig /flushdns >> C:\ueberwachung\ergebnis\liste.txt 
43.
echo. >> C:\ueberwachung\ergebnis\liste.txt 
44.
echo Ende des Test. >> C:\ueberwachung\ergebnis\liste.txt 
45.
echo. >> C:\ueberwachung\ergebnis\liste.txt 
46.
echo ------------------------------------------------------ >> C:\ueberwachung\ergebnis\liste.txt 
47.
echo ------------------------------------------------------ >> C:\ueberwachung\ergebnis\liste.txt 
48.
cls 
49.
goto anfang
Als erste habe ich die Datei bestimmt um die es geht. Dann wollte ich per "wenn dann sonst" sagen, dass wenn die Datei 10MB groß ist, dass sie dann gelöscht werden soll und ansonsten soll mit dem Script weiter gemacht werden. Doch das habe ich bis lang noch nicht hin bekommen und hoffe, dass ihr mir helfen könnt.
01.
IF "%Datei%" == "10MB" GOTO loeschen else GOTO ueberwachung
Ich denke mal, dass ich entweder mit Klammern arbeiten muss oder das Batch das else nicht kann. Mein Ausbilder meint aber, dass es das geben würde. Hoffe, dass ihr mir bei dem Problem helfen könnt.

Vielen Dank
Tobias
Mitglied: slubitz76
29.09.2009 um 09:46 Uhr
Die ELSE-Klausel muss auf der Zeile mit dem Befehl nach dem IF stehen.
Zum Beispiel:

IF EXIST test.txt (
del test.txt
) ELSE (
echo test.txt fehlt
)
Bitte warten ..
Mitglied: slubitz76
29.09.2009 um 09:49 Uhr
Oder du nimmst klammern:
IF EXIST test.txt (del test.txt) ELSE echo test.txt fehlt
Bitte warten ..
Mitglied: Iwan
29.09.2009 um 09:56 Uhr
guten morgen,

ich würde lediglich Fehler protokollieren und nicht jeden einzelnen Ping und Tracert, um die Datei klein zu halten
oder
man könnte einfach nur das Tracert protokollieren, da man dort auch sieht, wo es hakt, und das Ping ganz weglassen
Bitte warten ..
Mitglied: slubitz76
29.09.2009 um 10:00 Uhr
Das wäre wohl die bessere Variante......
Bitte warten ..
Mitglied: Muckel1986
29.09.2009 um 10:02 Uhr
Danke für deine Hilfe slubitz76!

Also müsste es so funktionieren:
01.
: anfang 
02.
REM Groeße der txt einbeziehen 
03.
IF %Datei% == "10MB" ( GOTO loeschen ) 
04.
	ELSE ( GOTO ueberwachung ) 
05.
 
06.
REM wenn groeßer 
07.
:loeschen 
08.
	DEL C:\ueberwachung\ergebnis\liste.txt 
09.
	GOTO WEITER 
10.
 
11.
REM Das ist nicht mehr bestandteil des IF-Zweiges! 
12.
:WEITER 
13.
	echo Die Datei wurde am %date% neu angelegt, da sie zu groß wurde. >> C:\ueberwachung\ergebnis\liste.txt 
14.
	GOTO ueberwachung
Eine weitere Frage hätte ich auch noch. Wie berechnet das Windows ScriptingHost die Zeitangabe? In der warten.vbs habe ich ja eine Zeitangabe. Ist jene in Millisekunden? Denn ich würde jene gerne so einstellen, dass das Script alle fünf Minuten durchläuft.

Vielen Dank
Tobias
Bitte warten ..
Mitglied: St-Andreas
29.09.2009 um 10:15 Uhr
Ausserdem würde ich die Ausgabe in eine datei umlenken deren Bezeichnung das aktuelle Systemdatum wiedergibt. Damit erhält man mehrere kleine Dateien und eine bessere Übersicht, vor allem wenn nur Fehler protokolliert werden.
Bitte warten ..
Mitglied: Muckel1986
29.09.2009 um 10:19 Uhr
Hallo zusammen,

das Problem ist, dass ich nicht nur die Fehler oder positiven Pings gebrauchen kann. Denn der interne Server ist fast immer erreichbar, aber man kommt nicht raus. Hinzu habe ich fest gestellt, dass die Pings teilweise positiv sind, der trace aber abbricht. (Getestet habe ich das über einen anderen Zugang, der eine dauerhafte Verbindung hat - habe nebenbei gesurft und das Gateway hat auch keinen Fehler zurückgegeben.)
01.
PING und TRACE Test vom 27.09.2009 um 19:41:45,00  
02.
------------------------------------------------------  
03.
 
04.
Ping wird ausgefhrt fr 10.10.10.1 mit 32 Bytes Daten: 
05.
 
06.
Antwort von 192.168.33.1: Zielnetz nicht erreichbar. 
07.
Antwort von 192.168.33.1: Zielnetz nicht erreichbar. 
08.
Antwort von 192.168.33.1: Zielnetz nicht erreichbar. 
09.
Antwort von 192.168.33.1: Zielnetz nicht erreichbar. 
10.
 
11.
Ping-Statistik fr 10.10.10.1: 
12.
    Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0 (0% Verlust), 
13.
 
14.
Ping wird ausgefhrt fr www.l.google.com [74.125.43.99] mit 32 Bytes Daten: 
15.
 
16.
Antwort von 74.125.43.99: Bytes=32 Zeit=95ms TTL=56 
17.
Antwort von 74.125.43.99: Bytes=32 Zeit=62ms TTL=56 
18.
Antwort von 74.125.43.99: Bytes=32 Zeit=68ms TTL=56 
19.
Antwort von 74.125.43.99: Bytes=32 Zeit=205ms TTL=56 
20.
 
21.
Ping-Statistik fr 74.125.43.99: 
22.
    Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0 (0% Verlust), 
23.
 
24.
Ca. Zeitangaben in Millisek.: 
25.
    Minimum = 62ms, Maximum = 205ms, Mittelwert = 107ms 
26.
 
27.
Ping wird ausgefhrt fr www.l.google.com [74.125.39.106] mit 32 Bytes Daten: 
28.
 
29.
Antwort von 74.125.39.106: Bytes=32 Zeit=135ms TTL=56 
30.
Antwort von 74.125.39.106: Bytes=32 Zeit=67ms TTL=56 
31.
Antwort von 74.125.39.106: Bytes=32 Zeit=151ms TTL=56 
32.
Antwort von 74.125.39.106: Bytes=32 Zeit=69ms TTL=56 
33.
 
34.
Ping-Statistik fr 74.125.39.106: 
35.
    Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0 (0% Verlust), 
36.
 
37.
Ca. Zeitangaben in Millisek.: 
38.
    Minimum = 67ms, Maximum = 151ms, Mittelwert = 105ms 
39.
 
40.
Routenverfolgung zu www.l.google.com [74.125.43.99] ber maximal 30 Abschnitte: 
41.
  1    <1 ms     *       <1 ms  192.168.33.1  
42.
  2  192.168.33.1  meldet: Zielhost nicht erreichbar. 
43.
Ablaufverfolgung beendet. 
44.
 
45.
Windows-IP-Konfiguration 
46.
Der DNS-Aufl”sungscache wurde geleert. 
47.
  
48.
Ende des Test.  
49.
------------------------------------------------------  
50.
------------------------------------------------------ 
Das Script möchte ich später noch Filtern und in eine zweite *.txt erstellen, in der dann eine bessere Auflistung folgt. Nach folgendem Schema:
01.
Datum Uhrzeit erfolgreich/nichterfolgreich 
02.
29.09.2009 - 10:05 - keine Verbindung möglich / Verbindung nicht möglich
Doch dazu komme ich, wenn das erste erstmal funktioniert. Habe hier auch schon mehrere Beispiele gelesen, aber mein Ausbilder wünscht erstmal nur die einfache Variante. Ich selbst nutze die Aufgabe dazu, um mich mit Netzwerken, Monitoring usw. auseinander zu setzten - denn die Ausbildung hier ist leider nicht so sehr gut, aber das ist ein Thema für sich.

Vielen Dank für eure Hilfe und Tipps
Tobias
Bitte warten ..
Mitglied: Iwan
29.09.2009 um 11:05 Uhr
dann kürz doch die Pinggeschichte einfach mal ab:
01.
REM Es wird 1 Ping an 10.10.10.1 gesendet: 
02.
PING -n 1 10.10.10.1 
03.
REM Datum und Uhrzeit angepasst (dd.mm.yyyy hh:mm:ss): 
04.
FOR /f "delims=, tokens=1-4" %%a in ("%date%,%time%") do SET Uhrzeit=%%a %%b 
05.
REM Bei Pingfehler wird dies protokolliert: 
06.
IF errorlevel 1 ECHO echo %Uhrzeit%: PING 10.10.10.1 fehlgeschlagen  >> C:\ueberwachung\ergebnis\liste.txt 
Bitte warten ..
Mitglied: Muckel1986
29.09.2009 um 23:23 Uhr
Guten Abend,

danke für deine Hilfe. Es hat sich heute Nachmittag herrausgestellt, dass unser Geschäftsführer mit der betreuenden IT-Firma am Donnerstag einen Termin hat. Von daher soll das Script morgen früh unbedingt laufen und die Fehler bzw. auch die Erfolgreiche Verbindung Protokolieren. Um die Lister übersichtlicher zu haben, möchte ich deinen Tipp gerne benutzen. Ich möchte nun zwei Dateien erstellen. Eine fehler.txt und eine erfolgreich.txt In die Dateien soll wie in deinem Beispiel bereits geschrieben das Datum stehen, die Zeit und dann die Fehler- oder Erfolgsmeldung.

Da ich leider nicht genau weiß, was deine For-Schleife macht, habe ich das Datum so geschrieben: %date:~0% und die Uhrzeit so: %time:~0,8% Habe das Datum und die Uhrzeit via echo Befehl in die txt schreiben lassen und es funktioniert. So steht es auch im wikibook. Probiert habe ich es so:
01.
@ECHO OFF 
02.
cd C:\ 
03.
cd C:\ueberwachung 
04.
md C:\ueberwachung\ergebnis\ 
05.
:ueberwachung 
06.
REM Zeitverzoegertes wiederholen 
07.
wscript warten.vbs 
08.
 
09.
REM Datum und Zeit in das Format xx.xx.xxxx xx:xx:xx einrichten 
10.
set datum=%date:~0% 
11.
set zeit=%time:~0,8%  
12.
 
13.
REM PING zu der IP des "BBW Servers" 
14.
ping -n 1 10.10.10.1 >> C:\ueberwachung\ergebnis\ping.txt 
15.
	REM Errorlevel in eine Variable speichern 
16.
	set BBW=%errorlevel% 
17.
 
18.
REM PING zu der IP des "www.google.de" 
19.
ping -n 1 www.google.de >> C:\ueberwachung\ergebnis\ping.txt 
20.
	REM Errorlevel in eine Variable speichern 
21.
	set GOOGLE=%errorlevel% 
22.
 
23.
REM PING zu der IP des "www.chip.de" 
24.
ping -n 1 www.chip.de >> C:\ueberwachung\ergebnis\ping.txt 
25.
	REM Errorlevel in eine Variable speichern 
26.
	set CHIP=%errorlevel% 
27.
 
28.
REM leeren des DNS-Caches um zu gefährleisten, dass es nicht am Client liegt 
29.
ipconfig /flushdns >> C:\ueberwachung\ergebnis\ping.txt 
30.
 
31.
if "%BBW%" == 0 ( echo %datum% %zeit% BBW-Server erfolgreich >> C:\ueberwachung\ergebnis\erfolg.txt ) 
32.
	ELSE ( echo %datum% %zeit% BBW-Server fehlerhaft >> C:\ueberwachung\ergebnis\fehler.txt ) 
33.
 
34.
if "%GOOGLE%" == 0 ( echo %datum% %zeit% GOOGLE-Server erfolgreich >> C:\ueberwachung\ergebnis\erfolg.txt ) 
35.
	ELSE ( echo %datum% %zeit% GOOGLE-Server fehlerhaft >> C:\ueberwachung\ergebnis\fehler.txt ) 
36.
 
37.
if "%CHIP%" == 0 ( echo %datum% %zeit% CHIP-Server erfolgreich >> C:\ueberwachung\ergebnis\erfolg.txt ) 
38.
	ELSE ( echo %datum% %zeit% CHIP-Server fehlerhaft >> C:\ueberwachung\ergebnis\fehler.txt ) 
39.
 
40.
cls 
41.
goto ueberwachung
In der IF-Bedingung möchte ich halt halt unterbringen, dass einmal der Erfolg oder der MIsserfolg geloogt wird. Nach dem Grundsatz wenn dann sonst, den ja die meisten Programmier-/Scriptsprachen beherschen.

Die Hauptdatei in der "alles" steht wird schonmal erstellt. Der Inhalt schaut zurzeit so aus:
01.
Ping wird ausgefhrt fr 10.10.10.1 mit 32 Bytes Daten: 
02.
 
03.
Antwort von 192.168.33.1: Zielnetz nicht erreichbar. 
04.
 
05.
Ping-Statistik fr 10.10.10.1: 
06.
    Pakete: Gesendet = 1, Empfangen = 1, Verloren = 0 (0% Verlust), 
07.
 
08.
 
09.
Ping wird ausgefhrt fr www.l.google.com [209.85.129.103] mit 32 Bytes Daten: 
10.
 
11.
Antwort von 209.85.129.103: Bytes=32 Zeit=59ms TTL=56 
12.
 
13.
Ping-Statistik fr 209.85.129.103: 
14.
    Pakete: Gesendet = 1, Empfangen = 1, Verloren = 0 (0% Verlust), 
15.
 
16.
Ca. Zeitangaben in Millisek.: 
17.
    Minimum = 59ms, Maximum = 59ms, Mittelwert = 59ms 
18.
 
19.
Ping wird ausgefhrt fr www.chip.de [212.162.62.43] mit 32 Bytes Daten: 
20.
Zeitberschreitung der Anforderung. 
21.
 
22.
Ping-Statistik fr 212.162.62.43: 
23.
    Pakete: Gesendet = 1, Empfangen = 0, Verloren = 1 (100% Verlust), 
24.
 
25.
Windows-IP-Konfiguration 
26.
 
27.
Der DNS-Aufl”sungscache wurde geleert.
Auch wird eine fehler.txt erstellt, die aber leider keinen Inhalt hat.

Ich hoffe sehr, dass ihr mir helfen könnt.
Vielen Dank
Muckel
Bitte warten ..
Mitglied: Iwan
30.09.2009 um 08:38 Uhr
guten morgen,

habe es gerade mal getestet, Fehler korrigiert und etwas verbessert
01.
@ECHO OFF 
02.
CD /D C:\ueberwachung 
03.
MD %CD%\ergebnis\ 
04.
SET FileOK=%CD%\ergebnis\erfolg.txt 
05.
SET FileER=%CD%\ergebnis\fehler.txt 
06.
SET FilePI=%CD%\ergebnis\ping.txt 
07.
 
08.
:ueberwachung 
09.
ECHO Zeitverzoegertes wiederholen 
10.
wscript warten.vbs 
11.
 
12.
ECHO Datum und Zeit in das Format xx.xx.xxxx xx:xx:xx einrichten 
13.
SET datum=%date:~0% 
14.
SET zeit=%time:~0,8%  
15.
 
16.
ECHO PING zu der IP des "BBW Servers" 
17.
PING -n 1 10.10.10.1 >> %FilePI% 
18.
REM Errorlevel in eine Variable speichern 
19.
SET BBW=%errorlevel% 
20.
 
21.
ECHO PING zu der IP des "www.google.de" 
22.
PING -n 1 www.google.de >> %FilePI% 
23.
REM Errorlevel in eine Variable speichern 
24.
SET GOOGLE=%errorlevel% 
25.
 
26.
ECHO PING zu der IP des "www.chip.de" 
27.
PING -n 1 www.chip.de >> %FilePI% 
28.
REM Errorlevel in eine Variable speichern 
29.
SET CHIP=%errorlevel% 
30.
 
31.
REM leeren des DNS-Caches um zu gefährleisten, dass es nicht am Client liegt 
32.
ipconfig /flushdns >> %FilePI% 
33.
 
34.
ECHO Fehlerauswertung 
35.
IF %BBW% == 0 ( echo %datum% %zeit% BBW-Server erfolgreich >> %FileOK% ) ELSE ( echo %datum% %zeit% BBW-Server fehlerhaft >> %FileER% ) 
36.
IF %GOOGLE% == 0 ( echo %datum% %zeit% GOOGLE-Server erfolgreich >> %FileOK% ) ELSE ( echo %datum% %zeit% GOOGLE-Server fehlerhaft >> %FileER% ) 
37.
IF %CHIP% == 0 ( echo %datum% %zeit% CHIP-Server erfolgreich >> %FileOK% ) ELSE ( echo %datum% %zeit% CHIP-Server fehlerhaft >> %FileER% ) 
38.
 
39.
cls 
40.
goto ueberwachung
bei mir funktioniert es ohne Probleme
Bitte warten ..
Mitglied: Muckel1986
30.09.2009 um 09:12 Uhr
Vielen lieben Dank! Es scheint zu funktionieren. Gleich gehe ich an das betreffende Netz und werde dann auch sehen, ob die erfolg.txt erstellt wird - bin aber zuversichtlich, dass es funktioniert. Wo genau nun mein Fehler war, weiß ich nicht so genau. Der unterschied ist "nur", dass Du für die Umlenkung in die Dateien eine Variable genutzt hast und ich direkt den Pfad geschrieben hatte.

Vielen Dank
Muckel

P.S. Beitrag Markiere ich nach dem letzten Test als gelöst und werde dann auch den Inhalt aller drei Dateien posten.
Bitte warten ..
Mitglied: Iwan
30.09.2009 um 09:59 Uhr
der Fehler lag darin, das du "" um die Variablen drum herum benutzt hast
das mit dem Setzen der Variablen für die Dateien ist quasi nur "Kosmetik"
Bitte warten ..
Mitglied: Muckel1986
30.09.2009 um 16:18 Uhr
Hallo - gestern Abend hatte ich es auch ohne die Anführungszeichen ausprobiert. Aber nun funktioniert es ja


Aufgabenstellung

Da es immer wieder Probleme mit dem Internet in dem Betrieb gibt, soll mit "Windows Bord Mitteln" eine dokumentation geführt werden, die aufschluss darüber gibt, wann das Internet verfügbar war und wann nicht.

Ist-Situation

Das Interne Netz ist ein Klass A Netz und die betreuende IT-Firma hat einen Server. Auf diesem Server (bzw. der dortigen Kerio Firewall) melden sich die Benutzer an und werden dann auf die Internetseite "Weitergeleitet".

Problem ist nun, dass man sich zwar sehr häufig anmelden kann, aber nicht in's world-wide-web kommt. Die Ping-Versuche haben ergeben, dass der interne Server erreichbar ist, Server im World-Wide-Web aber nicht. Und genau dieses Problem soll dokumentiert werden.

Überlegung zur lösung dieser Aufgabe

Unter MS Windows ist es möglich in der "Shell" einen Ping-Befehl ab zu senden. Die Test haben gezeigt, dass der interne Server fast immer erreichbar ist, aber Pings die nach außen gehen nicht. Dieses "Verhalten" nutze ich, um die erreichbarkeit und die nicht erreichbarkeit zu dokumentieren.

Umsetzung

Die Umsetzung dieser Überlegung bezieht sich auf drei Dateien. Mit der ersten Datei wird das Script automatisiert aufgerufen. Die zweite Datei sorgt dafür, dass das Script in einem angegebenen Zeitinterwall wiederholt wird und die letzte Datei führt die ping's und die Protokollierung durch.

die erste Datei --> aufruf.vbs

Diese Datei dient dazu, dass das Script automatisch gestartet wird. Um dies umzusetzten muss man eine Verknüpfung zu der Datei für alle Benutzer im autostart Ordner anlegen. Am einfachsten geht dies über den Explorer (Windowstaste + E) in das Verzeichnis
01.
C:\Dokumente und Einstellungen\All Users\Startmenü\Programme\Autostart
wechseln und dort eine Verknüpfung zu
01.
C:\ueberwachung\aufruf.vbs
anlegen. Diese Verknüpfung wird dann bei jedem Windowsstart / jeder Anmeldung automatisch aufgerufen.

Die Datei als solches hat nicht viel Code und schaut so aus:
01.
Set WshShell = WScript.CreateObject("WScript.Shell") 
02.
WshShell.Run "ueberwachung.bat",0,True

die zweite Datei --> warten.vbs

Sorgt dafür, dass das Script nach der angegebenen Zeit wiederholt wird. Für meine Aufgabe habe ich es auf eine Minute (60000 Millisekunden) gestellt.
01.
REM Zeit für die Wiederholung in Milisekunden 
02.
wscript.sleep(60000) 
03.
REM Zeitangaben 
04.
REM eine Minute: 60000 
05.
REM halbe Minute: 30000
Wer sich nicht sicher ist, wie man Millisekunden in eine andere Zeit umrechnet, kann einen Generator auf der Internetseite ConwertAll.com benutzen.

die dritte Datei --> ueberwachung.bat

In dieser Datei befindet sich nun das eigentliche Script. Die Erklärung werde ich in die einzelnen Schritte gliedern und am Ende nochmal den ganze Code zur verfügung stellen.

definieren der Variablen

01.
@ECHO OFF  
02.
CD /D C:\ueberwachung  
03.
MD %CD%\ergebnis\  
04.
REM Definieren der Variablen 
05.
SET FileOK=%CD%\ergebnis\erfolg.txt  
06.
SET FileER=%CD%\ergebnis\fehler.txt  
07.
SET FilePI=%CD%\ergebnis\ping.txt  
08.
REM Datum und Zeit in das Format tt.mm.jjjj hh:mm:ss einrichten  
09.
SET datum=%date:~0%  
10.
SET zeit=%time:~0,8%  
Am Anfang habe ich die "Statusmeldungen" ausgeschaltet, damit der Anwender kein cmd-Fenster sieht und nicht in seiner Arbeit gestört wird. Danach wechsel ich in das Verzeichnis, in dem sich die drei Dateien befinden. Der Schalter /D sorgt dafür, dass man ggf. auch auf das Laufwerk wechselt. Im Anschluss daran wird das Unterverzeichnis ergebnis erstellt, in dem später die Log-Dateien sein sollen.

Im zweiten Abschnitt des ersten Teils werden Variablen definiert, die später genutzt werden, um den Code abzukürzen. FileOK ist für die positiven Erfolgsmeldungen gedacht und bezieht sich auf die Datei erfolg.txt die wie die beiden anderen Dateien im Unterverzeichnis ergebnis erstellt wird. FileER ist für die fehlerhaften Meldungen gedacht und bezieht sich auf die Datei fehler.txt. Die Variable FilePI bezieht sich auf die Datei ping.txt in der für uns "Admins" die Ergebnisse der jeweiligen Pings und des DNS-Cache leerens zusehen sein sollen.

Als letztes wird die Ausgabe des Datums und der Uhrzeit in das Format tt.mm.jjjj bzw. hh:mm:ss angepasst.

ausführen der Arbeits-Befehle

01.
:ueberwachung  
02.
REM Zeitverzoegertes wiederholen  
03.
wscript warten.vbs  
04.
 
05.
ECHO PING zu der IP des "Internen Servers" >> %FilePI%  
06.
PING -n 1 10.10.10.1 >> %FilePI%  
07.
REM Errorlevel in eine Variable speichern  
08.
SET INTERN=%errorlevel%  
09.
 
10.
ECHO PING zu der IP des "www.google.de" >> %FilePI%  
11.
PING -n 1 www.google.de >> %FilePI%  
12.
REM Errorlevel in eine Variable speichern  
13.
SET GOOGLE=%errorlevel%  
14.
 
15.
ECHO PING zu der IP des "www.chip.de" >> %FilePI%  
16.
PING -n 1 www.chip.de >> %FilePI%  
17.
REM Errorlevel in eine Variable speichern  
18.
SET CHIP=%errorlevel%  
19.
 
20.
REM leeren des DNS-Caches um zu gefährleisten, dass es nicht am Client liegt  
21.
ipconfig /flushdns >> %FilePI% 
Dieser Teil wird benötigt, um die eigentliche "Arbeit" durch zu führen. Dabei gibt es drei PING-Blöcke. Einen für den Internen-Server und zwei für die externen. Als letztes wird der DNS-Cache des Clients geleert um sicher zu stellen, dass es nicht der Client ist, der für den Fehler verantwortlich ist.

Der Schalter "/n 1" bei dem Ping-Befehl sorgt dafür, dass "nur" ein Ping-Paket gesendet wird.Im Anschluss an dem Ping wird eine Variable mit dem errorlevel des Ping belegt. Um die Variable sich sinnvoll zu merken habe ich ihr den Namen des jeweiligen Pings gegeben; also INTERN, GOOGLE und CHIP.

Hinter den jeweiligen Befehlen ist ein ">> %FilePI%" zu lesen. Das sorgt dafür, dass die Ausgabe des jeweiligen Befehls auch in eine Datei geschrieben wird. Die Variable wurde am Anfang des Scriptes definiert.

loggen der Ergebnisse

01.
REM Abschließen der Datei 
02.
ECHO. >> %FilePI% 
03.
ECHO ------------------------------------------------------------ >> %FilePI% 
04.
ECHO. >> %FilePI% 
05.
REM Fehlerauswertung  
06.
IF %INTERN% == 0 ( echo %datum% %zeit% BBW-Server erfolgreich >> %FileOK% ) ELSE ( echo %datum% %zeit% BBW-Server fehlerhaft >> %FileER% )  
07.
IF %GOOGLE% == 0 ( echo %datum% %zeit% GOOGLE-Server erfolgreich >> %FileOK% ) ELSE ( echo %datum% %zeit% GOOGLE-Server fehlerhaft >> %FileER% )  
08.
IF %CHIP% == 0 ( echo %datum% %zeit% CHIP-Server erfolgreich >> %FileOK% ) ELSE ( echo %datum% %zeit% CHIP-Server fehlerhaft >> %FileER% )  
09.
cls  
10.
goto ueberwachung
Am Anfang von diesem letzten Abschnitt schreibe ich eine Leerzeile, eine "Strichzeile" und wieder eine Leerzeile in die Datei, die die eigentliche Arbeit logged. Grund dafür ist, dass man eine bessere Übersicht in der Datei hat und das man weiß, wann der Durchlauf vorbei ist.

Danach folgen drei IF-Befehle, die entweder den Erfolgreichen Ping melden oder den Misserfolg. Das "Ergebnis" schreiben sie in die jeweilige Datei. Zu erst wird der Erfolgreiche Ping abgefragt und über die Variable "FileOK" in die Datei erfolg.txt mit dem Datum, der Uhrzeit und einem Text geschrieben. Trifft diese Bedingung nicht zu, so wird dann das ähnliche über die Variable "FileER" in die fehlet.txt geschrieben. Ebenfalls mit dem Datum und der Uhrzeit.

Danach wird mit cls die "Anzeige" geleert und mit "goto ueberwachung" geht man wieder zum Beginn der "Schleife".

die Log-Dateien

Um die Erfolge bzw. die Misserfolge zu dokumentieren habe ich mich zweier Dateien bedient. Einmal die fehler.txt und der erfolg.txt. In die beiden Dateien wird jeweils geschrieben, ob der Ping zu dem jeweiligen Ziel erfolgreich war oder nicht. Am Anfang der Zeile steht dort das Datum, gefolgt von der Uhrzeit und einer Meldung um welchen Ping es sich gehandelt hat. Eine Ausgabe kann dann zum Beispiel so aussiehen:
01.
30.09.2009  11:12:14   Interner-Server erfolgreich    
02.
30.09.2009  11:13:23   Interner-Server erfolgreich  
und für die fehler.txt schaut es dann so aus:
01.
30.09.2009  11:12:14   Interner-Server nicht erfolgreich    
02.
30.09.2009  11:13:23   Interner-Server nicht erfolgreich  
Natürlich tauchen da auch die anderen ping-Ziele auf.

die fertigen Dateien

aufruf.vbs

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

warten.vbs

01.
REM Zeit für die Wiederholung in Milisekunden 
02.
wscript.sleep(60000) 
03.
REM Zeitangaben 
04.
REM eine Minute: 60000 
05.
REM halbe Minute: 30000

ueberwachung.bat

01.
@ECHO OFF  
02.
CD /D C:\ueberwachung  
03.
MD %CD%\ergebnis\  
04.
REM Definieren der Variablen 
05.
SET FileOK=%CD%\ergebnis\erfolg.txt  
06.
SET FileER=%CD%\ergebnis\fehler.txt  
07.
SET FilePI=%CD%\ergebnis\ping.txt  
08.
REM Datum und Zeit in das Format tt.mm.jjjj hh:mm:ss einrichten  
09.
SET datum=%date:~0%  
10.
SET zeit=%time:~0,8%   
11.
:ueberwachung  
12.
REM Zeitverzoegertes wiederholen  
13.
wscript warten.vbs  
14.
 
15.
ECHO PING zu der IP des "Internen Servers" >> %FilePI%  
16.
PING -n 1 10.10.10.1 >> %FilePI%  
17.
REM Errorlevel in eine Variable speichern  
18.
SET INTERN=%errorlevel%  
19.
 
20.
ECHO PING zu der IP des "www.google.de" >> %FilePI%  
21.
PING -n 1 www.google.de >> %FilePI%  
22.
REM Errorlevel in eine Variable speichern  
23.
SET GOOGLE=%errorlevel%  
24.
 
25.
ECHO PING zu der IP des "www.chip.de" >> %FilePI%  
26.
PING -n 1 www.chip.de >> %FilePI%  
27.
REM Errorlevel in eine Variable speichern  
28.
SET CHIP=%errorlevel%  
29.
 
30.
REM leeren des DNS-Caches um zu gefährleisten, dass es nicht am Client liegt  
31.
ipconfig /flushdns >> %FilePI%  
32.
 
33.
REM Abschließen der Datei 
34.
ECHO. >> %FilePI% 
35.
ECHO ------------------------------------------------------------ >> %FilePI% 
36.
ECHO. >> %FilePI% 
37.
REM Fehlerauswertung  
38.
IF %INTERN% == 0 ( echo %datum% %zeit% BBW-Server erfolgreich >> %FileOK% ) ELSE ( echo %datum% %zeit% BBW-Server fehlerhaft >> %FileER% )  
39.
IF %GOOGLE% == 0 ( echo %datum% %zeit% GOOGLE-Server erfolgreich >> %FileOK% ) ELSE ( echo %datum% %zeit% GOOGLE-Server fehlerhaft >> %FileER% )  
40.
IF %CHIP% == 0 ( echo %datum% %zeit% CHIP-Server erfolgreich >> %FileOK% ) ELSE ( echo %datum% %zeit% CHIP-Server fehlerhaft >> %FileER% )  
41.
cls  
42.
goto ueberwachung

Beispiel der Log-Dateien

erfolg.txt
01.
30.09.2009  12:50:51   BBW-Server erfolgreich    
02.
30.09.2009  12:52:31   BBW-Server erfolgreich    
03.
30.09.2009  12:57:52   BBW-Server erfolgreich 
(Hier würden die beiden anderen Server auch auftauchen, wenn die Verbindung erfolgreich wäre.)
fehler.txt
01.
30.09.2009  12:59:37   BBW-Server fehlerhaft    
02.
30.09.2009  12:59:37   GOOGLE-Server fehlerhaft    
03.
30.09.2009  12:59:37   CHIP-Server fehlerhaft    
04.
30.09.2009  13:01:18   BBW-Server fehlerhaft    
05.
30.09.2009  13:01:18   GOOGLE-Server fehlerhaft    
06.
30.09.2009  13:01:18   CHIP-Server fehlerhaft   
ping.txt
01.
PING zu der IP des "BBW Servers"    
02.
Ping wird ausgefhrt fr 10.10.10.1 mit 32 Bytes Daten: 
03.
Antwort von 10.10.10.1: Bytes=32 Zeit=2ms TTL=128 
04.
Ping-Statistik fr 10.10.10.1: 
05.
    Pakete: Gesendet = 1, Empfangen = 1, Verloren = 0 (0% Verlust), 
06.
Ca. Zeitangaben in Millisek.: 
07.
    Minimum = 2ms, Maximum = 2ms, Mittelwert = 2ms 
08.
 
09.
PING zu der IP des "www.google.de"    
10.
Ping www.l.google.com [209.85.129.104] mit 32 Bytes Daten: 
11.
Zeitberschreitung der Anforderung. 
12.
Ping-Statistik fr 209.85.129.104: 
13.
    Pakete: Gesendet = 1, Empfangen = 0, Verloren = 1 (100% Verlust), 
14.
 
15.
PING zu der IP des "www.chip.de"    
16.
Ping www.chip.de [212.162.62.43] mit 32 Bytes Daten: 
17.
Zeitberschreitung der Anforderung. 
18.
Ping-Statistik fr 212.162.62.43: 
19.
    Pakete: Gesendet = 1, Empfangen = 0, Verloren = 1 (100% Verlust), 
20.
 
21.
Windows-IP-Konfiguration 
22.
Der DNS-Auflösungscache wurde geleert. 
23.
   
24.
------------------------------------------------------------   
25.
PING zu der IP des "BBW Servers"    
26.
Ping wird ausgefhrt fr 10.10.10.1 mit 32 Bytes Daten: 
27.
Antwort von 10.10.10.1: Bytes=32 Zeit=2ms TTL=128 
28.
Ping-Statistik fr 10.10.10.1: 
29.
    Pakete: Gesendet = 1, Empfangen = 1, Verloren = 0 (0% Verlust), 
30.
Ca. Zeitangaben in Millisek.: 
31.
    Minimum = 2ms, Maximum = 2ms, Mittelwert = 2ms 
32.
 
33.
PING zu der IP des "www.google.de"    
34.
Ping www.l.google.com [209.85.129.104] mit 32 Bytes Daten: 
35.
Zeitberschreitung der Anforderung. 
36.
Ping-Statistik fr 209.85.129.104: 
37.
    Pakete: Gesendet = 1, Empfangen = 0, Verloren = 1 (100% Verlust), 
38.
 
39.
PING zu der IP des "www.chip.de"    
40.
Ping www.chip.de [212.162.62.43] mit 32 Bytes Daten: 
41.
Zeitberschreitung der Anforderung. 
42.
Ping-Statistik fr 212.162.62.43: 
43.
    Pakete: Gesendet = 1, Empfangen = 0, Verloren = 1 (100% Verlust), 
44.
 
45.
Windows-IP-Konfiguration 
46.
Der DNS-Auflösungscache wurde geleert. 
47.
   
48.
------------------------------------------------------------  

ein Fazit?!

Die Aufgabe von meine Ausbilder habe ich dank der Hilfe von Iwan gelöst. Für unser Problem im Berufsbildungswerk kann nun dokumentiert werden, wie die Verfügbarkeit des Internets ist. Die Auflistung in den Log-Dateien könnte noch passender gestaltet werden, da das Script aber heute unbedingt in den Einsatz gehen musste, werde ich das zu eine späteren Zeitpunkt machen.

Denn angedacht ist es, dass man die Logs in ein csv Format oder ähnliches ausgeben wird, damit man es später mit einem Tabellenkalkulationsprogramm (Excell, Calc) nutzen kann und dann zum Beispiel auch nach dem Server oder der Zeit sortieren kann.

Das fertige Script kann man auch noch übersichtlich in meinem kleinen Wiki lesen. Dort wird es heute Nachmittag/Abend (sofern ich keine ISDN-Verbindung mehr habe) auch ein Archiv geben, damit man sich das Script downloaden kann.

Vielen Dank für die Hilfe und viel Spaß mit dem fertigen Script
Muckel/Tobias
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Batch Script Editor - Programmvorstellung des Entwicklers (16)

Tipp von wowItsDoge zum Thema Batch & Shell ...

Batch & Shell
gelöst Ordner per Batch verschieben, Datei kopieren (2)

Frage von Shape.Shifter zum Thema Batch & Shell ...

Perl
gelöst Mit Perl aus einer Datei teilidentische Zeilen löschen (5)

Frage von Jeduja zum Thema Perl ...

Windows Server
Batch Script bei Start ausführen (3)

Frage von KEFHVDI zum Thema Windows Server ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...