89460
Goto Top

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):
@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.
2. Einmal alle testen mit Proktokoll (online&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
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
)
3. Alle dauerhaft testen ohne Proktokoll:
@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^!^!^! 
)
4. Alle dauerhaft testen mit Proktokoll (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.

Content-ID: 155786

Url: https://administrator.de/contentid/155786

Ausgedruckt am: 25.11.2024 um 10:11 Uhr

60730
60730 25.11.2010 um 16:21:17 Uhr
Goto Top
moin,

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?
btw: Wenn du schon mit Schleifen experimentierst - und die Server.txt so beschreibst - warum dann nicht Nägel mit Köpfen machen und ( als Delims nehmen - dann macht das alles mehr Sinn - oder glaubst du einer, der seine IPs alle im Kopf hat braucht so eine Abfrage?
  • 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 face-wink
"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. face-wink

Gruß