89460
25.11.2010, aktualisiert um 16:52:21 Uhr
8598
1
0
Onlinetester in Batch
Wer viele Server oder Hosts überwachen will kann man mal das hier ausprobieren....
Erläuterungen gibt im ersten Verwendungsbeipiel.
1. Einmal alle testen mit Proktokoll (offline):
2. Einmal alle testen mit Proktokoll (online&offline):
3. Alle dauerhaft testen ohne Proktokoll:
4. Alle dauerhaft testen mit Proktokoll (offline):
zusätzlich muss man nur eine Datei "server.txt" erstellen in die man einfach alle Server/Host wie in folgendem Beispiel reinschreibt (natürlich ohne die Infos dahinter^^)
www.google.de (Internet)
meinepage.de (Internet)
ftp.serverx.de (Internet FTP-Server)
smtp.servery.de (Internet SMTP-Server)
123.255.255.0 (IP-Adresse Internet)
192.168.1.1 (IP-Adresse Intranet)
pc-wohnzimmer (PC im Heimnetznerk)
pc-kind (PC im Heimnetznerk)
Diese Datei muss im Verzeichnis der Batchdatei liegen.
Es werden je nachdem was euch interressiert die Dateien "offline.txt" oder "status.txt".
Ganze wichtig!!!! Wenn ihr z.B. nur 1 Host anpingen wollt nutzt den Teil der im REM Bereich steht!!!
Ansonsten könnte eure IP auf dem Host z.B. Google.de blockiert werden oder es entsteht unnötiger Traffic auf eurem/einem Webserver.
Der Teil hinter REM sorgt dafür, dass der Test nur alle 5 Minuten durchgeführt wird.
Erläuterungen gibt im ersten Verwendungsbeipiel.
1. Einmal alle testen mit Proktokoll (offline):
@echo off
if not exist server.txt (
echo Serverdatenbank (Server.txt) nicht gefunden
pause
exit)
REM Hier wird überprüft ob eine server.txt existiert mit den Servern drin.
:jmp1
set /p delete=Wollen Sie das alte Protokoll entfernen^?(J^/N)
REM Hier soll nachgefragt werden, ob das alte Protokoll entfernt werden soll
if /i %delete%==j (
del offline.txt /f /q /s
goto jmp2)
if /i %delete%==n (
goto jmp2)
else (
goto jmp1)
:jmp2
REM Die Bedingung J(a) N(ein) wird überprüft. Wenn eine falsche Eingabe gemacht worden ist wird wieder zur Frage gesprungen.
cls
color 02
echo Servertest Status^|Ping
echo _____________________________________________________________________
for /f %%c in (server.txt) do (set server=%%c && call :proofing)
REM Hier werden die verschiedenen Zeilen aus der Server.txt gelesen und in die Variable "server" geschrieben.
REM Dann wird für jede Zeile das Unterprogramm Proofing aufgerufen. (call :proofing)
pause
exit
:proofing
set proof=0
set ping=x
REM Hier werden einfach nur die Variablen neu deklariert.
for /f "tokens=7,8 delims==< " %%i in ('ping -n 1 %server%^|findstr "TTL="') do (set ping=%%i && set proof=%%j)
REM Hier werden 2 Werte ausgelesen die als Ausgabe bei einem erfolgreichem Ping entstehen.
REM findstr "TTL=" wird benutzt um die richtige Zeile mit bistimmter Zeichenfolge zu finden (find string), da sonst falsche Zeilen ausgelesen werden.
REM Dann wird wenn der String gefunden wurde ping und proof gesetzt.
REM Da bei einem fehlgeschlagenen Ping die Werte nicht gesetzt werden wurden zuvor die Variablen neu deklariert.
if /i %proof%==TTL (
echo Server %server% online^|%ping%
) else (
echo Server ----^>%server% offline^!^!^!
echo %server% offline %date% %time%>>offline.txt
)
REM Hier werden die Bedingungen überprüft. Wenn "proof" nicht gesetzt wurde bzw. 0 ist ist die Bedingung für einen erfolgreichen Ping nicht gegeben.
REM Je nachdem ob der Server online oder offline ist wird eine Ausgabe erstellt die den Server anzeigt, ob er online oder offline ist und je nachdem der Ping.
REM Dann folgt das schreiben in die Protokolldatei mit Datum und Uhrzeit was duch echo .....>>datei.dat gemacht wird.
@echo off
if not exist server.txt (
echo Serverdatenbank (Server.txt) nicht gefunden
pause
exit)
:jmp1
set /p delete=Wollen Sie das alte Protokoll entfernen^?(J^/N)
if /i %delete%==j (
del status.txt /f /q /s
goto jmp2)
if /i %delete%==n (
goto jmp2)
else (
goto jmp1)
:jmp2
cls
color 02
echo Servertest Status^|Ping
echo _____________________________________________________________________
for /f %%c in (server.txt) do (set server=%%c && call :proofing)
pause
exit
:proofing
set proof=0
set ping=x
for /f "tokens=7,8 delims==< " %%i in ('ping -n 1 %server%^|findstr "TTL="') do (set ping=%%i && set proof=%%j)
if /i %proof%==TTL (
echo Server %server% online^|%ping%
echo %server% online %date% %time%>>status.txt
) else (
echo Server ----^>%server% offline^!^!^!
echo %server% offline %date% %time%>>status.txt
)
@echo off
if not exist server.txt (
echo Serverdatenbank (Server.txt) nicht gefunden
pause
exit)
:retest
cls
color 02
echo Servertest Status^|Ping
echo _____________________________________________________________________
for /f %%c in (server.txt) do (set server=%%c && call :proofing)
REM Bitte REM und diesen Text entfernen wenn nötig
REM ping -n 301 127.0.0.1
goto :retest
exit
:proofing
set proof=0
set ping=x
for /f "tokens=7,8 delims==< " %%i in ('ping -n 1 %server%^|findstr "TTL="') do (set ping=%%i && set proof=%%j)
if /i %proof%==TTL (
echo Server %server% online^|%ping%
) else (
echo Server ----^>%server% offline^!^!^!
)
@echo off
if not exist server.txt (
echo Serverdatenbank (Server.txt) nicht gefunden
pause
exit)
:jmp1
set /p delete=Wollen Sie das alte Protokoll entfernen^?(J^/N)
if /i %delete%==j (
del status.txt /f /q /s
goto jmp2)
if /i %delete%==n (
goto jmp2)
else (
goto jmp1)
:jmp2
:retest
cls
color 02
echo Servertest Status^|Ping
echo _____________________________________________________________________
for /f %%c in (server.txt) do (set server=%%c && call :proofing)
REM Bitte REM und diesen Text entfernen wenn nötig
REM ping -n 301 127.0.0.1
goto :retest
exit
:proofing
set proof=0
set ping=x
for /f "tokens=7,8 delims==< " %%i in ('ping -n 1 %server%^|findstr "TTL="') do (set ping=%%i && set proof=%%j)
if /i %proof%==TTL (
echo Server %server% online^|%ping%
) else (
echo Server ----^>%server% offline^!^!^!
echo %server% offline %date% %time%>>offline.txt
)
zusätzlich muss man nur eine Datei "server.txt" erstellen in die man einfach alle Server/Host wie in folgendem Beispiel reinschreibt (natürlich ohne die Infos dahinter^^)
www.google.de (Internet)
meinepage.de (Internet)
ftp.serverx.de (Internet FTP-Server)
smtp.servery.de (Internet SMTP-Server)
123.255.255.0 (IP-Adresse Internet)
192.168.1.1 (IP-Adresse Intranet)
pc-wohnzimmer (PC im Heimnetznerk)
pc-kind (PC im Heimnetznerk)
Diese Datei muss im Verzeichnis der Batchdatei liegen.
Es werden je nachdem was euch interressiert die Dateien "offline.txt" oder "status.txt".
Ganze wichtig!!!! Wenn ihr z.B. nur 1 Host anpingen wollt nutzt den Teil der im REM Bereich steht!!!
Ansonsten könnte eure IP auf dem Host z.B. Google.de blockiert werden oder es entsteht unnötiger Traffic auf eurem/einem Webserver.
Der Teil hinter REM sorgt dafür, dass der Test nur alle 5 Minuten durchgeführt wird.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 155786
Url: https://administrator.de/contentid/155786
Ausgedruckt am: 25.11.2024 um 10:11 Uhr
1 Kommentar
moin,
für eine Anleitung ist das aber noch etwas dürftig...
Würde mich (und ganz sicher ein paar andere) sehr freuen, wenn du da noch mal etwas nachlegst
"Gerne" mit Rems beschreiben, was denn da so passiert - denn dafür ist eine Anleitung irgendwie da.
Sonst müßte Frank ja eine Copy&Paste Rubrik erschaffen, das wollen wir aber garnicht.
Gruß
für eine Anleitung ist das aber noch etwas dürftig...
- du machst zwar eine recht kosmisch gestaltete Abfrage, ob man das Log löschen will, aber ob die Server.txt vorhanden ist - frägst du niemanden?
- deine Zeile 25 finde ich auch recht quer gestaltet - und ob das ohne delayedexpansion überhaupt funktioniert?
Würde mich (und ganz sicher ein paar andere) sehr freuen, wenn du da noch mal etwas nachlegst
"Gerne" mit Rems beschreiben, was denn da so passiert - denn dafür ist eine Anleitung irgendwie da.
Sonst müßte Frank ja eine Copy&Paste Rubrik erschaffen, das wollen wir aber garnicht.
Gruß