prohoevi

Eine Serverüberprüfung per Batchdatei erstellen

Hey Leute face-smile
Der Sinn der Datei soll sein, darstellen zu können welche Server Online sind und welche offline.

Also ich stelle mir das so vor das die Batch-Datei IP-Adressen aus einer Text-Datei rauskopiert und diese anpingt.

dann soll die Batch, sofern der ping erlogreich ist in eine neue Textdatei schreiben z.B.: xxx.xxx.xxx.xxx online
wenn dier ping nihc erfolgreich ist soll sie reinschreiben xxx.xxx.xxx.xxx offline

funktioniert das so wie ich mir das vorstelle ?

das heißt das die batch sachen aus einer textdatei rauskopiert und dann eine neue erstellt, wo man dann halt je nachdem online oder offline sieht?


Lg Jan
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 151930

Url: https://administrator.de/forum/eine-serverueberpruefung-per-batchdatei-erstellen-151930.html

Ausgedruckt am: 16.07.2025 um 02:07 Uhr

bastla
bastla 28.09.2010, aktualisiert am 18.10.2012 um 18:43:37 Uhr
Hallo ProHoevi!

Schau mal, ob Dir der Beitrag "Daten einer Pingabfrage per Script in eine Logdatei speichern" hilft ...

Grüße
bastla
Friemler
Friemler 28.09.2010 um 12:23:05 Uhr
Hallo Jan,

der folgende Code sollte für Dich eine Lösung sein:
@echo off

setlocal

set "IP_DB=IP_DB.txt"  
set "Output=IP_Stat.txt"  

del "%Output%" 2>NUL  

for /f "usebackq delims=" %%a in ("%IP_DB%") do (  
  (ping -n 1 %%a > NUL && echo %%a online || echo %%a offline)>>"%Output%"  
)

endlocal

In Zeile 5 und 6 musst Du für Dich passende Dateipfade festlegen. Die Ausgabedatei wird in Zeile 8 gelöscht, eine evtl. auftretende Fehlermeldung, das die Datei nicht existiert, wird durch 2>NUL nicht angezeigt. Die FOR-Schleife in Zeile 10 ließt die Datei mit den IP-Adressen zeilenweise aus und weist jede Adresse der Laufvariablen %%a zu, mit der in Zeile 11 der PING ausgeführt wird. Die Ausgabe von PING wird durch >NUL nicht angezeigt. Wenn der PING erfolgreich war, wird durch && die Meldung "xxx.xxx.xxx.xxx online" in die Ausgabedatei geschrieben, bei Misserfolg durch || die Meldung "xxx.xxx.xxx.xxx offline".

Gruß
Friemler
bastla
bastla 28.09.2010 um 12:29:39 Uhr
@Friemler
Nur als Anmerkung: Wenn schon eine Errorlevel-Abfrage - und nicht einfach
(ping -n 1 %%a > NUL && echo %%a online || echo %%a offline)>>"%Output%"
- würde ich zumindest die "delayedExpansion" einsparen und zB
 if errorlevel 1 (
    >>"%Output%" echo %%a offline  
  ) else (
    >>"%Output%" echo %%a online  
  )
verwenden ...

Grüße
bastla
Friemler
Friemler 28.09.2010 um 12:45:35 Uhr
Hallo bastla,

hast ja Recht, in der Kürze liegt die Würze face-wink. Habe es oben geändert.

Gruß
Friemler
ProHoevi
ProHoevi 28.09.2010 um 15:02:58 Uhr
Jaau face-smile das hat mich schonmal sehr weiter gebracht face-smile

habe es an ein paar anderen Rechnern getestet.

und bis eben hat auch alles geklappt nur jetzt sagt der mir auf einmal egal ob der Rechner an oder aus ist. immer das er online ist face-sad
woran liegt das ?
ProHoevi
ProHoevi 30.09.2010 um 18:02:10 Uhr
Geht das auch das man das nicht pingt sondern prüft ob ein dienst online ist?

weil es kann ja sein das der server da ist aber der dienst nicht ausgeführt wird.


zum beispiel den remotedekstop dienst?


LG
BigWim
BigWim 01.10.2010 um 09:12:00 Uhr
Im Prinzip ja. Etwas so

sc \\<Server> query <Dienstname>

Aber schau Dir mal die Möglichkeiten von sc mit sc /?


Markus
BigWim
BigWim 01.10.2010 um 09:13:16 Uhr
Zitat von @ProHoevi:
woran liegt das ?

Poste mal den verwendeten Code und das Ergebnis des manuellen Ping <Server>


Markus
ProHoevi
ProHoevi 01.10.2010 um 09:36:07 Uhr
naja im mom gehts mir eher darum das ich eine batch hinbekomme / bekomme ^^ die einen dienst prüft :P ansonstens genauso wie vorher mit dem ping face-smile nur halt mit dem dienst face-smile

Aber hier der quellcode


@echo off

setlocal

set "IP_DB=IP_List.txt"
set "Output=D:\IP_Stat.txt"

del "%Output%" 2>NUL

for /f "usebackq delims=" %%a in ("%IP_DB%") do (
( ping -n 1 %%a > NUL && echo %%a online || echo %%a offline)>>"%Output%"
)

endlocal