Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Daten einer Pingabfrage per Script in eine Logdatei speichern

Frage Entwicklung

Mitglied: LarryHH

LarryHH (Level 1) - Jetzt verbinden

07.05.2007, aktualisiert 08.05.2007, 7699 Aufrufe, 11 Kommentare

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!
Mitglied: dfritz
07.05.2007 um 12:26 Uhr
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
Bitte warten ..
Mitglied: LarryHH
07.05.2007 um 12:34 Uhr
Alles klar, danke erstmal dafür!
Aber ich wills mal weiter versuchen ein eigenes Script zu schreiben!
Vielleicht weiß ja noch jemand anderes eine Lösung!
Bitte warten ..
Mitglied: Biber
07.05.2007 um 12:39 Uhr
Moin LarryHH,

bitte Dein Betriebssystem angeben und die Skript-Sprache, in der Du schreibst.

Und/oder den relevanten Teil Deines vorhandenen Skripts.

Danke
Biber
Bitte warten ..
Mitglied: 26705
07.05.2007 um 12:45 Uhr
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 (
ping /n 1 /w 150 %%f | find /i "Antwort" && (@echo %%f - online >>ausgabe.txt & echo ----------------------- >>ausgabe.txt) || (@echo %%f - OFFLINE >>ausgabe.txt & echo ----------------------- >>ausgabe.txt)
)



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.
Bitte warten ..
Mitglied: LarryHH
07.05.2007 um 13:45 Uhr
Hallo Biber,

Betriebssystem ist MS Windows XP Prof.


Als bisherigen Quelltext habe ich:

' Pingabfrage

adresse = "IP"


wql = "select * from NetDiagnostics"
set WshShell = CreateObject("WScript.Shell")
Set wmi = GetObject("winmgmts:{(Shutdown)}//./root/cimv2")
Set obj = wmi.ExecQuery(wql)

For each netdiag in obj:exit For:Next
ok = netdiag.Ping(adresse, rohdaten)

If ok then
MsgBox "Rechner ist erreichbar."
else
MsgBox "Rechner ist unerreichbar."

End If

Ich möchte halt, dass das Script alle Rechner, die nicht per IP erreicht werden, in eine Logdatei schreibt!
Bitte warten ..
Mitglied: LarryHH
07.05.2007 um 14:02 Uhr
Danke auf jeden fal, aber so richtig hat das nicht funktioniert!
Muss ichg da noch etwas an der Batch verändern?
Bitte warten ..
Mitglied: 26705
07.05.2007 um 14:31 Uhr
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?
Bitte warten ..
Mitglied: LarryHH
07.05.2007 um 15:14 Uhr
Er schreibt gar nichts! Die Bat-datei läuft, aber in die Datei wird nicht geschrieben!
Bitte warten ..
Mitglied: bastla
07.05.2007 um 18:54 Uhr
Hallo LarryHH!

Etwas knapper gehalten könnte das etwa so aussehen:
01.
Set fso = CreateObject("Scripting.FileSystemObject") 
02.
Address = Split(fso.OpenTextFile("D:\IPListe.txt").ReadAll, vbCrLF) 
03.
Set Result = fso.OpenTextFile("D:\Unerreichbar.txt", 2, True) 
04.
For i = 0 To UBound(Address) 
05.
	wql = "select * from NetDiagnostics" 
06.
	Set wmi = GetObject("winmgmts:{(Shutdown)}//./root/cimv2") 
07.
	Set obj = wmi.ExecQuery(wql) 
08.
	For Each netdiag In obj 
09.
		If Not netdiag.Ping(Address(i)) Then Result.WriteLine Address(i) 
10.
	Next 
11.
Next 
12.
Result.Close 
13.
WScript.Echo "Fertig."
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]
Bitte warten ..
Mitglied: miniversum
08.05.2007 um 08:10 Uhr
Die Batch sollte gehen.
Ich habe auch so eine ähnliche allerdings ohne das find.
Die sieht dann verglichen so aus:
01.
@echo off 
02.
if exist ausgabe.txt del ausgabe.txt 
03.
FOR /f %%f IN ('type hosts.txt') DO ( 
04.
ping /n 1 /w 150 %%f 
05.
if %errorlevel% ( 
06.
echo %%f - OFFLINE >>ausgabe.txt 
07.
) else ( 
08.
echo %%f - online >>ausgabe.txt 
09.
10.
)
miniversum
Bitte warten ..
Mitglied: LarryHH
08.05.2007 um 10:06 Uhr
Vielen Dank für euer aller Hilfe!
Es funktioniert endlich mit Hilfe deines Scriptes @ Bastla!

Ihr habt mir sehr geholfen!
Viel Spaß euch noch und schönen Tag!
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

Tipp von agowa338 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...