Daten einer Pingabfrage per Script in eine Logdatei speichern
Hallo zusammen,
ich hab mal schnell eine Frage!
Ich möchte eine Pingabfrage für etwa 500 Rechner starten, um herauszufinden welche Rechner nachts eingeschaltet sind!
Das Ergebnis möchte ich in einer Logdatei speichern, um im nachhinein das ganze nachvollziehen zu können!
Die Pingabfrage habe ich bereits per Script geschrieben und sie funktioniert auch!
Zumindestens für einen Rechner!
Könnt ihr mir ein wenig helfen, wie ich es am besten löse, dass das Script auf eine Datei zugreift in der die 500 Rechner mit IP aufgelistet sind und dann die Ergebnisse der Abfrage in einer Logdatei speichert?
Schon mmal eine schönen Dank für die Mühe im Vorfeld!
ich hab mal schnell eine Frage!
Ich möchte eine Pingabfrage für etwa 500 Rechner starten, um herauszufinden welche Rechner nachts eingeschaltet sind!
Das Ergebnis möchte ich in einer Logdatei speichern, um im nachhinein das ganze nachvollziehen zu können!
Die Pingabfrage habe ich bereits per Script geschrieben und sie funktioniert auch!
Zumindestens für einen Rechner!
Könnt ihr mir ein wenig helfen, wie ich es am besten löse, dass das Script auf eine Datei zugreift in der die 500 Rechner mit IP aufgelistet sind und dann die Ergebnisse der Abfrage in einer Logdatei speichert?
Schon mmal eine schönen Dank für die Mühe im Vorfeld!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 58239
Url: https://administrator.de/contentid/58239
Ausgedruckt am: 26.11.2024 um 10:11 Uhr
11 Kommentare
Neuester Kommentar
Hi,
empfehlen kann ich Dir ggf. das Tool "nmap". Vielleicht kommt es Dir aus der Unix-Welt bekannt vor. Damit kannst Du mit dem Parameter -sP 192.168.0.0/24 ganze Netzbereiche durchsuchen lassen. Angezeigt werden netterweise nur die Systeme, die auch up sind.
Ob Du das nun irgendwie in eine Textdatei Pipen kannst mit einem Batchfile, weiß ich nicht genau. Dafür sind meine DOS Batch Kenntnisse ein wenig eingerostet.
Gruß Daniel
empfehlen kann ich Dir ggf. das Tool "nmap". Vielleicht kommt es Dir aus der Unix-Welt bekannt vor. Damit kannst Du mit dem Parameter -sP 192.168.0.0/24 ganze Netzbereiche durchsuchen lassen. Angezeigt werden netterweise nur die Systeme, die auch up sind.
Ob Du das nun irgendwie in eine Textdatei Pipen kannst mit einem Batchfile, weiß ich nicht genau. Dafür sind meine DOS Batch Kenntnisse ein wenig eingerostet.
Gruß Daniel
Ich habe mir auch mal eine kleine Batch gebaut:
@echo off
if exist ausgabe.txt del ausgabe.txt else
FOR /f %%f IN (hosts.txt) DO (
)
Dazu gehört eine Datei "hosts.txt", in der stehen die Hostname untereinander (einer pro Zeile).
Als Ergebnis bekommt man dann die Datei "ausgabe.txt", dort steht dann drin, welcher Rechner online und welcher offline ist.
@echo off
if exist ausgabe.txt del ausgabe.txt else
FOR /f %%f IN (hosts.txt) DO (
Dazu gehört eine Datei "hosts.txt", in der stehen die Hostname untereinander (einer pro Zeile).
Als Ergebnis bekommt man dann die Datei "ausgabe.txt", dort steht dann drin, welcher Rechner online und welcher offline ist.
Ne, eigentlich nicht. Ich habe einfach den Code in ner Datei namens "start_ping.bat" stehen und im gleichen Ordner die "hosts.txt". Es ist auch egal ob in der Datei Hostnamen oder IP-Adressen stehen, ich bekomme ne Ausgabe geschrieben.
Was funktioniert denn nicht? Gibt es ne Fehlermeldung? Schreibt er nichts oder irgendwas wirres in die Ausgabedatei?
Was funktioniert denn nicht? Gibt es ne Fehlermeldung? Schreibt er nichts oder irgendwas wirres in die Ausgabedatei?
Hallo LarryHH!
Etwas knapper gehalten könnte das etwa so aussehen:
Das "WScript.Echo" am Schluss ist natürlich nur Verzierung ...
Grüße
bastla
[Edit] Zumindest die Zeilen "wql = ..." und "Set wmi = ..." könnten vor die Schleife gezogen werden ... [/Edit]
Etwas knapper gehalten könnte das etwa so aussehen:
Set fso = CreateObject("Scripting.FileSystemObject")
Address = Split(fso.OpenTextFile("D:\IPListe.txt").ReadAll, vbCrLF)
Set Result = fso.OpenTextFile("D:\Unerreichbar.txt", 2, True)
For i = 0 To UBound(Address)
wql = "select * from NetDiagnostics"
Set wmi = GetObject("winmgmts:{(Shutdown)}//./root/cimv2")
Set obj = wmi.ExecQuery(wql)
For Each netdiag In obj
If Not netdiag.Ping(Address(i)) Then Result.WriteLine Address(i)
Next
Next
Result.Close
WScript.Echo "Fertig."
Grüße
bastla
[Edit] Zumindest die Zeilen "wql = ..." und "Set wmi = ..." könnten vor die Schleife gezogen werden ... [/Edit]
Die Batch sollte gehen.
Ich habe auch so eine ähnliche allerdings ohne das find.
Die sieht dann verglichen so aus:
miniversum
Ich habe auch so eine ähnliche allerdings ohne das find.
Die sieht dann verglichen so aus:
@echo off
if exist ausgabe.txt del ausgabe.txt
FOR /f %%f IN ('type hosts.txt') DO (
ping /n 1 /w 150 %%f
if %errorlevel% (
echo %%f - OFFLINE >>ausgabe.txt
) else (
echo %%f - online >>ausgabe.txt
)
)