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

ping auf mehrere IPs, Ergebnisse in Datei ausgeben - bei Fehler Meldung (Ton bzw. Pop-UP)

Frage Entwicklung Batch & Shell

Mitglied: LinuxXP

LinuxXP (Level 1) - Jetzt verbinden

17.04.2008, aktualisiert 18.04.2008, 13371 Aufrufe, 21 Kommentare

Probleme mit dem Provider, laufende Überwachung der WAN-Anbindung und der externen Server.

Hallo liebe Administratoren und sonstige Forums-Mitglieder,

auf der Arbeit gibt es Probleme mit dem Internet-Provider. Daher möchte ich per PING die Erreichbarkeit mehrerer Server überwachen. Kann ich die "normale" Reaktionszeit einstellen (wie bei PING-Software möglich? OPTION). Die Ausgabe soll in eine Datei erfolgen (Datum und Uhrzeit, Server-IP und Reaktionszeit, Fehlermeldungen). Bei Fehlern (nicht erreichbar, Zeitüberschreitung) soll eine Meldung erfolgen (Pop-Up oder dergleichen) damit ich das Problem sofort erkennen und handeln kann.

Ich habe gegoogelt und herausgefunden, dass Batch-Scripte eine einfache Lösung sein soll. Daher meine Frage in diesem Forum. Die freien Programme geben leider a) die Daten nicht in eine Datei aus oder b) erstellen keine Meldung bei Fehlern (z.B. JP-ping von nedso.org)

Vielen Dank für Eure Hilfe

Christian

P.S. ich bin Script-technisch ein blutiger Amateur (einfache Linux-Scripte zur Datensicherung auf meinem Privatserver).
Mitglied: 54487
17.04.2008 um 13:07 Uhr
Hallo,

auch dieses Forum hat eine Suchfunktion, die sogar Ergebnisse liefert:
http://www.administrator.de/IP_pingen_und_Erreichbarkeit_mitloggen.html
Bitte warten ..
Mitglied: 60730
17.04.2008 um 13:19 Uhr
Hi,

angenommen, dein System ist ein deutsches, dann meldet Ping Zeitüberschreitung, ein englisches meldet Request timed out

Das solltest du im folgenden Script anpassen bevor du es als z.B Pingpong.cmd in einem separaten abspeicherst.


01.
ping %1 >ping.txt 
02.
findstr /c:"berschreitung" ping.txt 
03.
IF %ERRORLEVEL% == 1 goto end 
04.
IF %ERRORLEVEL% == 0 goto offline 
05.
 
06.
:offline 
07.
date /t >> pingpong.log 
08.
time /t >> pingpong.log 
09.
Echo System %1 hat sich nicht gemeldet. >> pingpong.log 
10.
notepad pingpong.log 
11.
:end
Aufrufen kannst du das, indem du den Scriptnamen und die gewünschte Ip dahinter angibst.
Z.B so:

01.
 
02.
pingpong.cmd 192.168.1.1 
03.
pingpong.cmd 192.168.1.2 
04.
 
Bitte warten ..
Mitglied: LinuxXP
17.04.2008 um 14:01 Uhr
Danke für das nette Script. Habe es pingsrv.cmd genannt und unter C:/Windows abgelegt.

Mein System ist englisch, daher in Zeile 2 natürlich "Request timed out".

Der Notepad Pop-UP funktioniert auch.

Folgende Fragen bleiben für mich noch offen:

a) das Programm soll regelmäßig (z.B. alle 2 Minuten) ausgeführt werden.

b) ich möchte die Server fest vorgeben (mehrere), wie mache ich das?

c) wo wird die pingpong.log (bei mir pingsrv.log) gespeichert?

d) notepad zeigt die gesammte Log-Datei an. Ich möchte nur die Fehlermeldung angezeigt bekommen (nur die aktuelle, für mehr informationen gibt es ja die pingpong.log).

e) kann ich neben der IP-Adresse auch eine eigene Bezeichnung (z.B. Mail Server 01) anzeigen lassen?

Ich habe leider nur Vorstellungen, wie mein Script arbeiten soll. Leider keine Lösung

Falls es hilfreich ist, hier meine "Idee" von dem Script:

1) Das Script wird bei Systemstart automatisch gestartet
2) Das Script prüft regelmäßig die angegebenen Server (z.B in eigener Datei - Zuordnung IP und Bezeichnung siehe e))
3) Das Script gibt die Ergebnisse (Verbingungszeit in ms) in eine Datei aus (bei Fehler automtischer Wert z.B. 5000 ms) idealerweise in eine Tabelle (Spalte 1 (Zeit, Bezeichnung1, Bezeichnung 2...) Spalte 2... (Datum und Uhrzeit des Tests dd.mm.jjjj - hh.mm.ss, Verbindungszeit1, Verbindungszeit2...)) So wäre die Datei einfach mittels Excel auszuwerten (Graphen, Durchschnitt, Verlaufsgraphik, etc.)
4) Tritt ein Fehler auf (Verbindungszeit sehr hoch (z.B. über 1.000 ms) oder time out) soll eine Meldung mit genau diesem Fehler aufpoppen (evt. mehrere Pop-Ups, falls ich nicht am Platz bin.
5) Der Programmablauf soll duch den Pop-UP nicht unterbrochen werden. (Das aktuelle Script (Kommando-Zeile friert ein, bis Notepad geschlossen wird.)

Ist das so machbar?
Sorry, wie gesagt bin ich echter Amateur, was Windows-Scripte angeht.

Danke nochmal für die bisherigen Hilfen und Anregungen (sorry nachdenker, so schnell kann ich das gezeigte script nicht für mich umsetzen).

Mit freundlichen Grüßen
Christian
Bitte warten ..
Mitglied: 60730
17.04.2008 um 14:30 Uhr
Folgende Fragen bleiben für mich noch
offen:

a) das Programm soll regelmäßig (z.B. alle 2 Minuten) ausgeführt werden.

das könntest du per At machen, oder z.B so:

pingeling.cmd
01.
:wait 
02.
	set /A Loop=%Loop%+1 
03.
	if %Loop% EQU 5000 goto ping 
04.
  
05.
goto wait 
06.
:ping 
07.
 
08.
pingpong.cmd 192.168.1.1 
09.
pingpong.cmd 192.168.1.2
Finde ich persönlich eleganter, denn so vermeidest du, das das Script mehrfach laufen würde (Fall eines Falles)
b) ich möchte die Server fest vorgeben (mehrere), wie mache ich das?
Siehe Aufruf hinter Pingpong.cmd - im Beispiel Pingeling.cmd
c) wo wird die pingpong.log (bei mir pingsrv.log) gespeichert?
Dort - wo Pingpong.cmd liegt, daher der Tipp in einen separaten Ordner legen.
Oder ">> pingpong.log" gegen ">> laufwerk:\pfad\pingpong.log" überall ändern.
d) notepad zeigt die gesammte Log-Datei an. Ich möchte nur die Fehlermeldung angezeigt bekommen (nur die aktuelle, für mehr informationen gibt es ja die pingpong.log).

War ja auch nur ein beispiel - im "ernstfall" würde ich anstelle von Notepad entweder eine Mail an dich verschicken (wenn Mailserver intern - extern ist das ja nix, wenn die externe Leitung weg ist)

e) kann ich neben der IP-Adresse auch eine eigene Bezeichnung (z.B. Mail Server 01) anzeigen lassen?

Yupp, wenn du in der Pingeling.cmd hinter die Ip Adresse noch den Namen (ohne Leerzeichen) schreibst und die zeile in Pingpong so abänderst.
01.
Echo System %1 %2 hat sich nicht gemeldet. >> pingpong.log

Ich habe leider nur Vorstellungen, wie mein Script arbeiten soll. Leider keine Lösung

Falls es hilfreich ist, hier meine
"Idee" von dem Script:

1) Das Script wird bei Systemstart automatisch gestartet

[Start]Systemsteuerung\Geplante Tasks\neuer task Pingpong eintragen - oder per Drag & Drop dorthjin schieben parameter starten bei Systemstart Benutzername und passwort dazu - fertig.

2) Das Script prüft regelmäßig die angegebenen Server (z.B in eigener Datei - Zuordnung IP und
Bezeichnung siehe e))

siehe Pingeling.cmd

3) Das Script gibt die Ergebnisse (Verbingungszeit in ms) in eine Datei aus (bei Fehler automtischer Wert z.B. 5000 ms) idealerweise in eine Tabelle (Spalte 1 (Zeit, Bezeichnung1, Bezeichnung 2...) Spalte 2...
(Datum und Uhrzeit des Tests dd.mm.jjjj - hh.mm.ss, Verbindungszeit1, Verbindungszeit2...)) So wäre die Datei einfach mittels Excel auszuwerten (Graphen, Durchschnitt, Verlaufsgraphik, etc.)

Puh - vielleicht mit dem Logparser realisierbar...

4) Tritt ein Fehler auf (Verbindungszeit sehr hoch (z.B. über 1.000 ms) oder time out) soll eine Meldung mit genau diesem Fehler aufpoppen (evt. mehrere Pop-Ups, falls ich nicht am Platz bin.

Dann nicht nur nach "Timeout" sondern auch nach "000 ms" suchen Und Notepad evtl. gegen "Net Send %computername% %1 %2 meldet Fehler" ersetzen- Nachrichtendienst dann bitte aktivieren.

5) Der Programmablauf soll duch den Pop-UP nicht unterbrochen werden. (Das aktuelle Script (Kommando-Zeile friert ein, bis Notepad geschlossen wird.)

Ist ja nur ein Demo, zum weiterstricken und sehen, wie es geht.

Ist das so machbar?

Machbar ist prinzipiell alles

Sorry, wie gesagt bin ich echter Amateur, was Windows-Scripte angeht.
Jeder fängt mal klein an...

Danke nochmal für die bisherigen Hilfen und Anregungen (sorry nachdenker, so schnell kann ich das gezeigte script nicht für mich umsetzen).

Mit freundlichen Grüßen
Christian

Bis später
TimoBeil
Bitte warten ..
Mitglied: LinuxXP
17.04.2008 um 16:09 Uhr
Hallo Timo,

danke für die Hilfe.

Anbei meine aktuellen batch-scripte

ping-ip (die Rahmen-Datei)

@echo off

:wait
set /A Loop=%Loop%+1
if %Loop% EQU 5000 goto ping
goto wait

:ping
pingserv.cmd x.x.x.x EAPNMS1-Lotus_Notes
pingserv.cmd x.x.x.x EAPNMS2-Lotus_Notes
pingserv.cmd x.x.x.x Firmen-Router
pingserv.cmd x.x.x.x Provider_Gateway


und die pingserv (die Datei, die die eigentlichen pings ausführt)

ping %1 >ping.txt
findstr /c:"Request timed out" ping.txt
IF %ERRORLEVEL% == 1 goto end
IF %ERRORLEVEL% == 0 goto offline

:offline
date /t >> C:\PING-log\IP-pinging.log
time /t >> C:\PING-log\IP-pinging.log
Echo System %1 %2 hat sich nicht gemeldet. >> C:\PING-log\IP-pinging.log
notepad C:\PING-log\IP-pinging.log
:end

Wenn ich jetzt ping-ip starte, bekomme ich ein Kommandozeilen-Fenster, das leer bleibt.

Ich bekomme noch keine Ausgabe in die Datei (besteht) C:\PING-log\IP-pinging.log.

Nach einem Anruf unseres Providers, möchten die jetzt auch noch eine Trace-Rout (tracert) auf die IP eines fehlgeschlagenen Ping, natürlich als Ausgabe in eine neue Datei (ideal wäre C:\PING-log\Trace-(Datum)-(Uhrzeit)-(IP).log).

Soweit ich es verstehe, benötigen wir jetzt folgende Dateien, die folgendes Ausführen

ping-ip (startet mit Windows, startet die einenzelen pingserv Anfragen)

a) start mit Windows - in Autostart eingefügt (tut)
b) Schleife ausführen (tut)
c) einzelne pingserv Anfragen starten (?)
c) zur Schleife zurückkehren (?)

wenn möglich, diese Datei im Hintergrund ausführen (ohne Fenster oder minimiert)

pingserv (startet den Ping, Ausgabe in Datei)

a) ping auf die IP-Adresse aus ping-ip
b) Ausgabe des Ergebnisses in die Datei C:\PING-log\IP-pinging.log (gerne mit Datum und Uhrzeit)
c) Bedingte Ausführung (wenn-dann-schleife?)
ca) kein Fehler (time out o.ä.) - d)
cb) Fehler ->
cba) Tracroute starten (evt. neues Script)
cbc) Fehlermeldung ausgeben (damit ich aktiv werden kann)
d) pingserv beenden

pingtrace (traceroute auf die IP mit Fehler)

a) Traceroute auf die IP aus pingserv cba)
b) neue Datei anlegen C:\PING-log\trace-(Datum)-(Uhrzeit)-(IP).log
c) Ausgabe der Traceroute in die Log-Datei (erste Zeile: Datum, Uhrzeit, IP-Adresse, evt. Bezeichnung)
d) pingtrace beenden (evt. timeout? oder bricht tracerout automatisch irgendwann ab?)

Ich hoffe, die Scripte nehmen so langsam Formen an.

Mit freundlichen Grüßen
Christian
Bitte warten ..
Mitglied: LinuxXP
17.04.2008 um 16:25 Uhr
Habe einen Fehler gefunden!

und die pingserv (die Datei, die die
eigentlichen pings ausführt)

> ping %1 >ping.txt
> findstr /c:"Request timed
out" ping.txt
> IF %ERRORLEVEL% == 1 goto end
> IF %ERRORLEVEL% == 0 goto offline
>
> :offline
> date /t >>
C:\PING-log\IP-pinging.log
> time /t >>
C:\PING-log\IP-pinging.log
> Echo System %1 %2 hat sich nicht
gemeldet. >>
C:\PING-log\IP-pinging.log
> notepad C:\PING-log\IP-pinging.log
> :end

Ich habe die "ping.txt" durch die "C:\PING-log\IP-pinging.log" ersetzt. Jetzt läuft es wie folgt ab:
Die ping-ip startet (schwarzes Fenster), dann wird die erste pingsrv gestartet (und jetzt auch protokolliert). Ich erhalte in der Datei die gleiche Ausgabe, wie in der Konsole auf einen normalen ping. Allerdings wird im Anschluss nicht die zweite IP gepingt, sondern beide Scripte beenden??? (Das ping-ip Fenster schließt sich!).

Statt dessen sollte doch nun die zweite IP gepingt werden (Ausgabe bitte unterhalb/oberhalb des letzten Eintrages).

Wo liegt der Fehler?

Mit freundlichen Grüßen
Christian
Bitte warten ..
Mitglied: 54487
17.04.2008 um 16:29 Uhr
Du musst verschachtelte Batches per call Batchname aufrufen.
Bitte warten ..
Mitglied: LinuxXP
17.04.2008 um 17:06 Uhr
Hallo nachdenker,

habe die Datei ping-ip.cmd angepasst

@echo off

:wait
set /A Loop=%Loop%+1
if %Loop% EQU 5000 goto ping
goto wait

:ping
@echo on
call pingserv.cmd xxx.xxx.xxx.xxx Lotus_Notes
call pingserv.cmd xxx.xxx.xxx.xxx Lotus_Notes
call pingserv.cmd xxx.xxx.xxx.xxx Router
call pingserv.cmd xxx.xxx.xxx.xxx Gateway
call pingserv.cmd xxx.xxx.xxx.xxx Mail
call pingserv.cmd xxx.xxx.xxx.xxx DNS


Allerdings wird jetzt die Datei IP-pinging.log jeweils überschrieben. Wie kann a) dafür sorgen, dass die neuen Einträge unterhalb/oberhalb des alten Eintrages eingetragen werden? b) dafür sorgen dass Datum und Uhrzeit (ggf. Bezeichnung der IP) als Zeile vor den jeweiligen Eintrag kommen?

wenn ich den Bereich ":ping" um die Zeile "goto wait" ergänze, läuft das ganze dann permanent?

Mit freundlichen Grüßen
Christian
Bitte warten ..
Mitglied: 60730
17.04.2008 um 17:13 Uhr
Hi,

schreibe die "batche" bitte zwischen
< code> und < /code> ist leichter zu editieren und zu lesen Hinter "<" kein Leerzeichen
01.
@echo off 
02.
  
03.
:wait 
04.
           set /A Loop=%Loop%+1 
05.
           if %Loop% EQU 5000 goto ping 
06.
           goto wait 
07.
  
08.
:ping 
09.
cmd /c pingserv.cmd x.x.x.x  EAPNMS1-Lotus_Notes 
10.
cmd /c pingserv.cmd x.x.x.x  EAPNMS2-Lotus_Notes 
11.
cmd /c pingserv.cmd x.x.x.x Firmen-Router 
12.
cmd /c pingserv.cmd x.x.x.x Provider_Gateway 
13.
 
14.
goto wait
und die pingserv (die Datei, die die
eigentlichen pings ausführt)

01.
 
02.
Rem Datum in Variable Date schreiben 
03.
FOR /F "TOKENS=1,2*" %%A IN ('DATE/T') DO SET DATE=%%B 
04.
 
05.
Rem durch setzen von nur einem ">" die Datei neu schreiben 
06.
ping %1 >ping.txt 
07.
findstr /c:"Request timed out" ping.txt 
08.
 IF %ERRORLEVEL% == 1 goto end 
09.
 IF %ERRORLEVEL% == 0 goto offline 
10.
 
11.
:offline 
12.
Rem anfügen des Hostnamens an den dateinamen der .log 
13.
time /t >>  C:\PING-log\IP-pinging%2-%date%.log 
14.
Echo System %1 %2 hat sich nicht gemeldet. >> C:\PING-log\IP-pinging%2-%date%.log 
15.
Rem notepad C:\PING-log\IP-pinging.log 
16.
Rem Notepad wird durch Net Send ersetzt. 
17.
cmd /c net send %computername% System %1 %2 hat sich nicht gemeldet - Bitte das ping%1.log ansehen. 
18.
cmd /c tracert %1 >ping%1.log 
19.
 
20.
rem "normalerweise würde ich diese "ping%1.log" ja mit einem Befehlszeilenmailer wie BMail.exe verschicken. 
21.
Rem Da Mailserver außerhalb - diese Krücke - aber das ist pre Alpha Status 
22.
:end
Nach einem Anruf unseres Providers, möchten die jetzt auch noch eine
Trace-Rout (tracert) auf die IP eines fehlgeschlagenen Ping, natürlich als
Ausgabe in eine neue Datei (ideal wäre C:\PING-log\Trace-(Datum)-(Uhrzeit)-(IP).log).
Soweit ich es verstehe, benötigen wir jetzt folgende Dateien, die folgendes
Ausführen

ping-ip (startet mit Windows, startet
die einenzelen pingserv Anfragen)

a) start mit Windows - in Autostart
eingefügt (tut)
b) Schleife ausführen (tut)
c) einzelne pingserv Anfragen starten (?)
c) zur Schleife zurückkehren (?)

wenn möglich, diese Datei im
Hintergrund ausführen (ohne Fenster oder
minimiert)

Wenn du das Script per At (geplante Tasks) startest, dann siehst du nix.
Bitte warten ..
Mitglied: LinuxXP
17.04.2008 um 17:33 Uhr
Hallo Timo

meine ping-ip.cmd sieht inzwischen so aus
01.
@echo off 
02.
 
03.
:wait 
04.
	set /A Loop=%Loop%+1 
05.
	if %Loop% EQU 5000 goto ping 
06.
	goto wait 
07.
 
08.
:ping 
09.
	call pingserv.cmd xxx.xxx.xxx.xxx Lotus_Notes 
10.
	call pingserv.cmd xxx.xxx.xxx.xxx Lotus_Notes 
11.
	call pingserv.cmd xxx.xxx.xxx.xxx Router 
12.
	call pingserv.cmd xxx.xxx.xxx.xxx Gateway 
13.
	call pingserv.cmd xxx.xxx.xxx.xxx Mail 
14.
	call pingserv.cmd xxx.xxx.xxx.xxx DNS
Das "goto wait" habe ich mir schon fast gedacht, lasse ich aber weg, bis alles andere läuft.
Der "call" kommt übrigens von nachdenker Besten Dank

Die pingserv.cmd hat diesen Stand

01.
ping %1 >>C:\PING-log\IP-pinging.log 
02.
date /t >> C:\PING-log\IP-pinging.log 
03.
time /t >> C:\PING-log\IP-pinging.log 
04.
 
05.
ping %1 >C:\PING-log\IP-pinging-tmp.log 
06.
date /t >> C:\PING-log\IP-pinging-tmp.log 
07.
time /t >> C:\PING-log\IP-pinging-tmp.log 
08.
findstr /c:"Request timed out" C:\PING-log\IP-pinging-tmp.log 
09.
IF %ERRORLEVEL% == 1 goto end 
10.
IF %ERRORLEVEL% == 0 goto offline 
11.
 
12.
:offline 
13.
date /t > C:\PING-log\pinging-error.log 
14.
time /t >> C:\PING-log\pinging-error.log 
15.
Echo System %1 %2 hat sich nicht gemeldet. >> C:\PING-log\pinging-error.log 
16.
notepad C:\PING-log\pinging-error.log 
17.
:end
Problem war, dass ich für jeden Server den Fehler bekomme, da Fehler natürlich in der Datei protolliert werden. Daher lasse ich den Ping jetzt zweimal laufen. Einmal für das Protokoll, einmal für den Test.

Die Erzeugung der Datei mit Datum werde ich für die Traceroute ausprobieren.

Soweit bin ich mit dem Ergebnis schon zufrieden.

Die Ausgabe der Fehlermeldung via "net send" test ich gleich einmal.

Mit freundlichen Grüßen
Christian
Bitte warten ..
Mitglied: LinuxXP
17.04.2008 um 17:43 Uhr
Sorry, "net send" funktioniert nicht (Fehlertext)
An error occurred while sending a message to [Computer-ID].

The message alias could not be found on the network.

Wohin (Progamm) würde die Nachricht denn geschickt? (nutzen Lotus notes)


Punkt 2:
Wie ändere ich den AT unter Windows XP Prof.? Ich habe AT in die Kommandozeile eingegeben und bekomme die Antwort, dass meine Liste leer ist.

Werde vorläufig noch über "notepad" gehen.

Ach ja, die Tracerout wurde sauber erstellt.

einen schönen Feierabend

Mit freundlichen Grüßen
Christian
Bitte warten ..
Mitglied: 60730
17.04.2008 um 17:44 Uhr
Hallo Timo

Problem war, dass ich für jeden Server den Fehler bekomme, da Fehler natürlich
in der Datei protolliert werden. Daher lasse ich den Ping jetzt zweimal laufen. Einmal
für das Protokoll, einmal für den Test.

Uri an Farid Stoppit
Nein im Ernst - schau dir "meine aktuelle variante" lieber genauer an..

Durch das doppelte >> in der ersten Zeile
ping %1 >>C:\PING-log\IP-pinging.log
werden sämtliche Fehler "dummerweise" übertragen. daher das REM und der Verweis nur einen > zu nutzen.

Mit freundlichen Grüßen
Christian

Zurück

warte mal ich edit den text grade...

Nimm dir solange die Zeit und lese "Systemsteuerung" Geplante Tasks nochmal in einem früheren Beitrag durch...
AT /? würde dich auch weiterbringen...

edit²

NET Start "Nachrichtendienst" in einer Dosbox eintippen, wenn das einen Fehler bringt, in "ausführen" Services.msc eingeben und dort den Nachrichtendienst auf automatisch und starten ändern.
Bitte warten ..
Mitglied: LinuxXP
18.04.2008 um 09:34 Uhr
Hallo Timo,

die IP-pinging.log soll ja fortlaufend geführt werden (NICHT überschreiben). Darum habe ich ja die *-tmp.log eingeführt (vielleicht nicht die beste Methode, aber funktioniert).

Den Windows Scheduler kenne ich (habe ihn jetzt auch gefunden). Habe IP-pinging auf Systemstart gestellt.

Wenn ich den Befehl
01.
 net send %computername%
mit einem Testtest in der Kommandozeile ausführe bekomme ich folgende Fehlermeldung:
An error occurred while sending a message to [Computername]
The messag alias could not be found on the network.

Habe nochmal die Services.mcs aufgerufen. Der Nachrichtendienst messenger war "disabled" habe ich auf Systemstart gestellt und (diesmal) manuell gestartet.

Test den Befehl "net send" nochmal.

TUT!!!

Andere Frage.

Wie kann ich automatisch Ordner für jeden Monat erstellen (für die IP-pinging.log und die trace-*.log)? Oder einfacher: Wie ist der Platzhalter für Monat (Format beliebig)?

Mit freundlichen Grüßen
Christian
Bitte warten ..
Mitglied: LinuxXP
18.04.2008 um 10:16 Uhr
Hallo nochmal,

zuerst hier meine aktuelle pingserv.cmd
01.
time /t >> C:\PING-log\IP-pinging.log 
02.
echo %2 >> C:\PING-log\IP-pinging.log 
03.
ping %1 >>C:\PING-log\IP-pinging.log 
04.
 
05.
date /t > C:\PING-log\IP-pinging-tmp.log 
06.
time /t >> C:\PING-log\IP-pinging-tmp.log 
07.
ping %1 >>C:\PING-log\IP-pinging-tmp.log 
08.
findstr /c:"Request timed out" C:\PING-log\IP-pinging-tmp.log 
09.
IF %ERRORLEVEL% == 1 goto end 
10.
IF %ERRORLEVEL% == 0 goto offline 
11.
 
12.
:offline 
13.
date /t > C:\PING-log\trace-%2-%date%-%1.log 
14.
time /t >> C:\PING-log\trace-%2-%date%-%1.log 
15.
echo %2 >> C:\PING-log\trace-%2-%date%-%1.log 
16.
ping %1 >>C:\PING-log\trace-%2-%date%-%1.log 
17.
tracert %1 >>C:\PING-log\trace-%2-%date%-%1.log 
18.
net send PUL40077 Ping auf %2 erfolglos - Bitte das Fehlerprotokoll ansehen. 
19.
 
20.
:end
Leider erscheint die Bezeichnung zur IP %2 in keiner Datei (weder in IP-pinging.log noch der *-tmp.log noch in der trace*-.log) Alle anderen Daten werden korrekt dargestellt. Wo liegt denn diesmal mein Fehler?

Danke für Eure Hilfe (bitte die Monatsfrage nicht vergessen)

Mit freundlichen Grüßen
Christian
Bitte warten ..
Mitglied: LinuxXP
18.04.2008 um 11:17 Uhr
Hallo liebe Administratoren und sonstige Foren-User,

das Problem ist größtenteils gelöst.

Aufgabe: Regelmäßige Überwachung bestimmter IP-Adressen (PING) mit Protollierung.
Bei Fehler wird eine Fehler-Log erstellt, die nach Datum, Uhrzeit, IP-Adresse und Bezeichnung einen Ping und eine Tracerout aufzeichnet. Anschließend erscheint eine Fehlermeldung, dass der Server nicht erreichbar ist.

Ausführung: Script eins ping-ip.cmd führt eine Warteschleife aus und führt das eigentliche Script für jeden aufgeführten Server aus.
01.
 @echo off 
02.
 
03.
:wait 
04.
	@echo off 
05.
	set /A Loop=%Loop%+1 
06.
	if %Loop% EQU 5000 goto ping 
07.
	goto wait 
08.
 
09.
:ping 
10.
	@echo on 
11.
	REM x.x.x.x für die IP-Adressen 
12.
	call pingserv.cmd x.x.x.x Firmen_Router 
13.
	call pingserv.cmd x.x.x.x Provider_Gateway 
14.
	call pingserv.cmd x.x.x.x Provider_GK_mail 
15.
	call pingserv.cmd x.x.x.x Provider_DNS_1 
16.
	call pingserv.cmd x.x.x.x EAPNMS1-Lotus_Notes 
17.
	call pingserv.cmd x.x.x.x EAPNMS2-Lotus_Notes 
18.
	echo _____Warteschleife_____ 
19.
	goto wait
Dabei gehe ich von innen (LAN - Gateway - Provider-Server - Ziel-Server) vor.

Ausführung: Script zwei pingserv.cmd führt zwei PINGs aus a) für das Protokoll b) für das tmp-Protokoll. In b) wird auf Fehler geprüft und falls ein Fehler auftritt, wird ein neues Protokoll erstellt, dass Datum, Uhrzeit, IP und Bezeichnung einen PING und eine TRACEROUT aufzeichnet. Anschließend werde ich per SEND auf den Fehler hingewiesen (p.s. Bezeichnung funktioniert - hatte versehentlich nur pingserv.cmd gestartet - da fehlt ja die Info).
01.
 REM Datum in Variable Date schreiben 
02.
FOR /F "TOKENS=1,2*" %%A IN ('DATE/T') DO SET DATE=%%B 
03.
 
04.
echo _____ naechster PING _____ >> C:\PING-log\IP-pinging.log 
05.
date /t >> C:\PING-log\IP-pinging.log 
06.
time /t >> C:\PING-log\IP-pinging.log 
07.
echo %2 >> C:\PING-log\IP-pinging.log 
08.
ping %1 >>C:\PING-log\IP-pinging.log 
09.
 
10.
date /t > C:\PING-log\IP-pinging-tmp.log 
11.
time /t >> C:\PING-log\IP-pinging-tmp.log 
12.
ping %1 >>C:\PING-log\IP-pinging-tmp.log 
13.
findstr /c:"Request timed out" C:\PING-log\IP-pinging-tmp.log 
14.
IF %ERRORLEVEL% == 1 goto end 
15.
IF %ERRORLEVEL% == 0 goto offline 
16.
 
17.
:offline 
18.
date /t > C:\PING-log\trace-%2-%date%-%1.log 
19.
time /t >> C:\PING-log\trace-%2-%date%-%1.log 
20.
echo %2 >> C:\PING-log\trace-%2-%date%-%1.log 
21.
ping %1 >>C:\PING-log\trace-%2-%date%-%1.log 
22.
tracert %1 >>C:\PING-log\trace-%2-%date%-%1.log 
23.
REM xxx für den Computernamen (manuell eingesetzt, funktionierte nicht automatisch) 
24.
net send xxxx Ping auf %2 erfolglos - Bitte das Fehlerprotokoll ansehen. 
25.
 
26.
:end
Gerne würde ich Log-Datein (bis auf die temporäre) in Ordnern nach Monat (monat-jahr) ablegen, das erleichtert die Suche und macht die IP-pinging.log weniger groß.

Mit freundlichen Grüßen
Christian
Bitte warten ..
Mitglied: LinuxXP
18.04.2008 um 14:36 Uhr
Hallo liebe Administratoren und Foren-User,

ich habe leider gerade ein neues Problem festgestellt. Nach einem PC Neustart ist das Script im Hintergrund gestartet. Leider liegt die CPU-Auslastung P4 2,8 GHZ 2 GB RAM knapp unter 100 %, wenn das Script aktiv ist (also immer!).

Wenn ich manuell einen pingserv.cmd starte, liegt die Auslastung zwischen 0 und max. 10 %.

Was läuft hier falsch?

Danke für Eure Hilfe

Mit freundlichen Grüßen
Christian
Bitte warten ..
Mitglied: LinuxXP
18.04.2008 um 15:55 Uhr
Hallo liebe Administratoren und Foren-User,

ich habe leider gerade ein neues Problem
festgestellt. Nach einem PC Neustart ist das
Script im Hintergrund gestartet. Leider liegt
die CPU-Auslastung P4 2,8 GHZ 2 GB RAM knapp
unter 100 %, wenn das Script aktiv ist
(also immer!).

Wenn ich manuell einen pingserv.cmd
starte, liegt die Auslastung zwischen 0 und
max. 10 %.

Was läuft hier falsch?

Danke für Eure Hilfe

Ich denke, ich habe den Fehler gefunden!

In der ping-ip.cmd wird der Wert für Loop am Anfang nicht auf 0 oder 1 gesetzt. Wie mache ich das?

Der Versuch
01.
REM Loop wieder auf null setzen 
02.
set /A Loop=0
ist schon einmal falsch!

Mit freundlichen Grüßen
Christian

Mit freundlichen Grüßen
Christian
Bitte warten ..
Mitglied: LinuxXP
18.04.2008 um 16:07 Uhr
Habe die Warteschleife geändert.

Siehe http://www.administrator.de/Kurze_Pause_in_einer_BATCH-Datei.html

Jetzt ist die CPU-Auslastung im grünen Bereich bis knapp über 10%!

Das Monatsproblem habe ich durch die Einfügung des Datums in die IP-pinging-[Datum].log gelöst. Die trace*.log Dateien haben ja eh schon das Datum im Namen.

Denke jetzt ist dieser Thread gelöst.

Danke für Eure massive und schnelle Hilfe und Eure Nachsicht mit einem GREENHORN

schönes Wochenende

Christian
Bitte warten ..
Mitglied: 54487
18.04.2008 um 16:13 Uhr
Der ist nicht falsch, sondern möglicherweise an der falschen Stelle eingefügt.

Ob du zur Initialisierung

set loop=0
oder
set /a loop=0

verwendest, ist übrigens egal.

Versuch mal anstelle des Loops die sleep.exe aus dem Resource-Kit.
http://www.microsoft.com/downloads/details.aspx?familyid=9d467a69-57ff- ...
Bitte warten ..
Mitglied: LinuxXP
18.04.2008 um 16:28 Uhr
Für alle, die ein ähnliches Problem haben, hier nochmal die beiden Scripte in Ihrer Endfassung:

ping-ip.cmd - wird automatisch mit dem System gestartet
01.
@echo off 
02.
 
03.
REM Datum in Variable Date schreiben 
04.
FOR /F "TOKENS=1,2*" %%A IN ('DATE/T') DO SET DATE=%%B 
05.
 
06.
:waiting 
07.
	@echo off 
08.
	ping -n 120 x.x.x.x > NUL 
09.
	goto pinging 
10.
 
11.
:pinging 
12.
	@echo off 
13.
	call pingserv.cmd x.x.x.x Firmen_Router 
14.
	call pingserv.cmd x.x.x.x Provider_Gateway 
15.
	call pingserv.cmd x.x.x.x Provider_GK_mail 
16.
	call pingserv.cmd x.x.x.x Provider_DNS_1 
17.
	call pingserv.cmd x.x.x.x öffentlich_zugänglicher_Server_am_Zielstandort 
18.
	call pingserv.cmd x.x.x.x EAPNMS1-Lotus_Notes 
19.
	call pingserv.cmd x.x.x.x EAPNMS2-Lotus_Notes 
20.
	@echo on 
21.
	echo ' >> C:\PING-log\IP-pinging-%date%.log 
22.
	echo _______________________ >> C:\PING-log\IP-pinging-%date%.log 
23.
	echo _____ Warteschleife _____ >> C:\PING-log\IP-pinging-%date%.log 
24.
	echo _______________________ >> C:\PING-log\IP-pinging-%date%.log 
25.
	@echo off 
26.
	goto waiting
Dieses Script enthält waiting eine pause von 2 Minuten - Ping auf die eigene lokale IP mit Zwangspause und null gesendeten Pings und pinging welches das Script pingserv für die jeweiligen Server (von innen nach außen - also Router - Gateway des Providers - zwei hochverfügbare Server des Providers (Geschäftskunden-e-mail und Domain-Name-Service) - öffentlicher Server am Zielstandort - E-Mail-Server (über VPN-tunnel)) anstößt. Die Warteschleife soll das Lesen des IP-pinging-[Datum].log's erleichtern.

pingserv.cmd
01.
@echo off 
02.
 
03.
REM Datum in Variable Date schreiben 
04.
FOR /F "TOKENS=1,2*" %%A IN ('DATE/T') DO SET DATE=%%B 
05.
 
06.
@echo on 
07.
 
08.
echo ' >> C:\PING-log\IP-pinging-%date%.log 
09.
echo _____ naechster PING _____ >> C:\PING-log\IP-pinging-%date%.log 
10.
date /t >> C:\PING-log\IP-pinging-%date%.log 
11.
time /t >> C:\PING-log\IP-pinging-%date%.log 
12.
echo %2 >> C:\PING-log\IP-pinging-%date%.log 
13.
ping %1 >>C:\PING-log\IP-pinging-%date%.log 
14.
 
15.
date /t > C:\PING-log\IP-pinging-tmp.log 
16.
time /t >> C:\PING-log\IP-pinging-tmp.log 
17.
ping %1 >>C:\PING-log\IP-pinging-tmp.log 
18.
@echo off 
19.
findstr /c:"Request timed out" C:\PING-log\IP-pinging-tmp.log 
20.
IF %ERRORLEVEL% == 1 goto end 
21.
IF %ERRORLEVEL% == 0 goto offline 
22.
 
23.
:offline 
24.
@echo on 
25.
date /t > C:\PING-log\trace-%2-%1-%date%.log 
26.
time /t >> C:\PING-log\trace-%2-%1-%date%.log 
27.
echo %2 >> C:\PING-log\trace-%2-%1-%date%.log 
28.
ping %1 >> C:\PING-log\trace-%2-%1-%date%.log 
29.
tracert %1 >> C:\PING-log\trace-%2-%1-%date%.log 
30.
net send [Rechnername] Ping auf %2 - IP %1 erfolglos - Bitte das Fehlerprotokoll unter C:\PING-log\ ansehen. 
31.
 
32.
:end
Hier wird zuerst der Trennstich erstellt, darunter kommen Hilfsdaten (Datum, Uhrzeit, IP, Serverbezeichnung), dann wird der Ping in die Log-Datei geschrieben (jeden Tag eine neue Datei). Der zweite Ping wird in die *tmp.log geschrieben, hier wird nach der Fehlermeldung "Request timed out" gesucht. Wird diese gefunden, wird eine neue Log-Datei *trace-[Serverbezeichnung]-[IP-Adresse]-[Datum].log erstellt. In diese Datei werden folgende Daten eingetragen: Datum, Uhrzeit, IP-Adresse, Serverbezeichnung, ein vollständiger Ping und eine Traceroute. Per send erhalte ich eine Meldung, dass ein Fehler auf [Serverbezeichnung] auftrag, und das ich im Verzeichnis "C:\PING-log\" das Protokoll finde.

Soweit mein funktionierendes Script

Danke nochmals an meine beiden Helfer
nachdenker
TimoBeil
Bitte warten ..
Mitglied: LinuxXP
18.04.2008 um 16:46 Uhr
Halle nachdenker,

habe hier im Forum eine bessere Lösung gefunden (die Warteschleife hat meine CPU voll ausgelastet). Aber Danke für den Hinweis.

Mit freundlichen Grüßen
Christian

Der ist nicht falsch, sondern
möglicherweise an der falschen Stelle
eingefügt.

Ob du zur Initialisierung

set loop=0
oder
set /a loop=0

verwendest, ist übrigens egal.

Versuch mal anstelle des Loops die
sleep.exe aus dem Resource-Kit.
http://www.microsoft.com/downloads/details.aspx?familyid=9d467a69-57ff- ...
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
DNS
Hostnames für mehrere IPs ermitteln (3)

Frage von Oneil-1989 zum Thema DNS ...

VB for Applications
Mehrere Spalten Durchsuchen und Ergebnisse in neuer Tabelle Ausgeben (3)

Frage von Mr.Green zum Thema VB for Applications ...

XML
XML Datei Fehler? (1)

Frage von Patrick-IT zum Thema XML ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (13)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...