Netzwerküberwachung per Batch Script - Datei ab bestimmter größe Löschen?
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:
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:
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.
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
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:
@ECHO OFF
cd C:\
cd C:\ueberwachung
md C:\ueberwachung\ergebnis\
: anfang
wscript warten.vbs
echo. >> C:\ueberwachung\ergebnis\liste.txt
echo PING und TRACE Test vom %date% um %time% >> C:\ueberwachung\ergebnis\liste.txt
echo ------------------------------------------------------ >> C:\ueberwachung\ergebnis\liste.txt
echo. >> C:\ueberwachung\ergebnis\liste.txt
REM echo. >> C:\ueberwachung\ergebnis\liste.txt
REM PING zu der IP des "BBW Servers"
ping 10.10.10.1 >> C:\ueberwachung\ergebnis\liste.txt
echo. >> C:\ueberwachung\ergebnis\liste.txt
REM PING zu www.google.de
ping www.google.de >> C:\ueberwachung\ergebnis\liste.txt
echo. >> C:\ueberwachung\ergebnis\liste.txt
REM PING zu der festen IP von chip.de
ping www.chip.de >> C:\ueberwachung\ergebnis\liste.txt
echo. >> C:\ueberwachung\ergebnis\liste.txt
REM TRACERT zu www.google.de
tracert www.google.de >> C:\ueberwachung\ergebnis\liste.txt
echo. >> C:\ueberwachung\ergebnis\liste.txt
REM leeren des DNS-Caches um zu gefährleisten, dass es nicht am Client liegt
ipconfig /flushdns >> C:\ueberwachung\ergebnis\liste.txt
echo. >> C:\ueberwachung\ergebnis\liste.txt
echo Ende des Test. >> C:\ueberwachung\ergebnis\liste.txt
echo. >> C:\ueberwachung\ergebnis\liste.txt
echo ------------------------------------------------------ >> C:\ueberwachung\ergebnis\liste.txt
echo ------------------------------------------------------ >> C:\ueberwachung\ergebnis\liste.txt
cls
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:
@ECHO OFF
cd C:\
cd C:\ueberwachung
md C:\ueberwachung\ergebnis\
set "Datei=C:\ueberwachung\ergebnis\liste.txt"
wscript warten.vbs
: anfang
REM Groeße der txt einbeziehen
IF "%Datei%" == "10MB" GOTO loeschen else GOTO ueberwachung
REM wenn groeßer
:loeschen
DEL C:\ueberwachung\ergebnis\liste.txt
GOTO WEITER
REM Das ist nicht mehr bestandteil des IF-Zweiges!
:WEITER
echo Die Datei wurde am %date% neu angelegt, da sie zu groß wurde. >> C:\ueberwachung\ergebnis\liste.txt
GOTO ueberwachung
:ueberwachung
echo. >> C:\ueberwachung\ergebnis\liste.txt
echo PING und TRACE Test vom %date% um %time% >> C:\ueberwachung\ergebnis\liste.txt
echo ------------------------------------------------------ >> C:\ueberwachung\ergebnis\liste.txt
echo. >> C:\ueberwachung\ergebnis\liste.txt
REM PING zu der IP des "BBW Servers"
ping 10.10.10.1 >> C:\ueberwachung\ergebnis\liste.txt
echo. >> C:\ueberwachung\ergebnis\liste.txt
REM PING zu www.google.de
ping www.google.de >> C:\ueberwachung\ergebnis\liste.txt
echo. >> C:\ueberwachung\ergebnis\liste.txt
REM PING zu der festen IP von google.com
ping www.google.com >> C:\ueberwachung\ergebnis\liste.txt
echo. >> C:\ueberwachung\ergebnis\liste.txt
REM TRACERT zu www.google.de
tracert www.google.de >> C:\ueberwachung\ergebnis\liste.txt
echo. >> C:\ueberwachung\ergebnis\liste.txt
REM leeren des DNS-Caches um zu gefährleisten, dass es nicht am Client liegt
ipconfig /flushdns >> C:\ueberwachung\ergebnis\liste.txt
echo. >> C:\ueberwachung\ergebnis\liste.txt
echo Ende des Test. >> C:\ueberwachung\ergebnis\liste.txt
echo. >> C:\ueberwachung\ergebnis\liste.txt
echo ------------------------------------------------------ >> C:\ueberwachung\ergebnis\liste.txt
echo ------------------------------------------------------ >> C:\ueberwachung\ergebnis\liste.txt
cls
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.
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 125995
Url: https://administrator.de/contentid/125995
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
13 Kommentare
Neuester Kommentar
dann kürz doch die Pinggeschichte einfach mal ab:
REM Es wird 1 Ping an 10.10.10.1 gesendet:
PING -n 1 10.10.10.1
REM Datum und Uhrzeit angepasst (dd.mm.yyyy hh:mm:ss):
FOR /f "delims=, tokens=1-4" %%a in ("%date%,%time%") do SET Uhrzeit=%%a %%b
REM Bei Pingfehler wird dies protokolliert:
IF errorlevel 1 ECHO echo %Uhrzeit%: PING 10.10.10.1 fehlgeschlagen >> C:\ueberwachung\ergebnis\liste.txt
guten morgen,
habe es gerade mal getestet, Fehler korrigiert und etwas verbessert
bei mir funktioniert es ohne Probleme
habe es gerade mal getestet, Fehler korrigiert und etwas verbessert
@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
ECHO Zeitverzoegertes wiederholen
wscript warten.vbs
ECHO 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"
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"
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"
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%
ECHO 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