ping auf mehrere IPs, Ergebnisse in Datei ausgeben - bei Fehler Meldung (Ton bzw. Pop-UP)
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).
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).
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 85755
Url: https://administrator.de/contentid/85755
Ausgedruckt am: 05.11.2024 um 16:11 Uhr
21 Kommentare
Neuester Kommentar
Hallo,
auch dieses Forum hat eine Suchfunktion, die sogar Ergebnisse liefert:
IP pingen und Erreichbarkeit mitloggen
auch dieses Forum hat eine Suchfunktion, die sogar Ergebnisse liefert:
IP pingen und Erreichbarkeit mitloggen
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.
Aufrufen kannst du das, indem du den Scriptnamen und die gewünschte Ip dahinter angibst.
Z.B so:
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.
ping %1 >ping.txt
findstr /c:"berschreitung" ping.txt
IF %ERRORLEVEL% == 1 goto end
IF %ERRORLEVEL% == 0 goto offline
:offline
date /t >> pingpong.log
time /t >> pingpong.log
Echo System %1 hat sich nicht gemeldet. >> pingpong.log
notepad pingpong.log
:end
Aufrufen kannst du das, indem du den Scriptnamen und die gewünschte Ip dahinter angibst.
Z.B so:
pingpong.cmd 192.168.1.1
pingpong.cmd 192.168.1.2
Folgende Fragen bleiben für mich noch
offen:
a) das Programm soll regelmäßig (z.B. alle 2 Minuten) ausgeführt werden.
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
:wait
set /A Loop=%Loop%+1
if %Loop% EQU 5000 goto ping
goto wait
:ping
pingpong.cmd 192.168.1.1
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.cmdc) 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.
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).
mfg
Christian
Bis später
TimoBeil
Du musst verschachtelte Batches per call Batchname aufrufen.
Hi,
schreibe die "batche" bitte zwischen
Wenn du das Script per At (geplante Tasks) startest, dann siehst du nix.
schreibe die "batche" bitte zwischen
< code> und < /code> ist leichter zu editieren und zu lesen Hinter "<" kein Leerzeichen
@echo off
:wait
set /A Loop=%Loop%+1
if %Loop% EQU 5000 goto ping
goto wait
:ping
cmd /c pingserv.cmd x.x.x.x EAPNMS1-Lotus_Notes
cmd /c pingserv.cmd x.x.x.x EAPNMS2-Lotus_Notes
cmd /c pingserv.cmd x.x.x.x Firmen-Router
cmd /c pingserv.cmd x.x.x.x Provider_Gateway
goto wait
und die pingserv (die Datei, die die
eigentlichen pings ausführt)
eigentlichen pings ausführt)
Rem Datum in Variable Date schreiben
FOR /F "TOKENS=1,2*" %%A IN ('DATE/T') DO SET DATE=%%B
Rem durch setzen von nur einem ">" die Datei neu schreiben
ping %1 >ping.txt
findstr /c:"Request timed out" ping.txt
IF %ERRORLEVEL% == 1 goto end
IF %ERRORLEVEL% == 0 goto offline
:offline
Rem anfügen des Hostnamens an den dateinamen der .log
time /t >> C:\PING-log\IP-pinging%2-%date%.log
Echo System %1 %2 hat sich nicht gemeldet. >> C:\PING-log\IP-pinging%2-%date%.log
Rem notepad C:\PING-log\IP-pinging.log
Rem Notepad wird durch Net Send ersetzt.
cmd /c net send %computername% System %1 %2 hat sich nicht gemeldet - Bitte das ping%1.log ansehen.
cmd /c tracert %1 >ping%1.log
rem "normalerweise würde ich diese "ping%1.log" ja mit einem Befehlszeilenmailer wie BMail.exe verschicken.
Rem Da Mailserver außerhalb - diese Krücke - aber das ist pre Alpha Status
: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)
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.
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.
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.mfg
Christian
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.
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- ...
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- ...