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 und Errorausgabe per Batch?

Frage Entwicklung Batch & Shell

Mitglied: donnerkai

donnerkai (Level 1) - Jetzt verbinden

18.11.2011, aktualisiert 18.10.2012, 10473 Aufrufe, 14 Kommentare

Hallo,

ich möchte gerne 4 verschiedene IP Adressen anpingen und das alle 3 Minuten.
Wenn keine Verbindung möglich ist, möchte ich einen Alarm in Form eines Popup oder ähnliches, ansonsten soll es im Hintergrund laufen.
Geht das per Batch?
Muss ich das Ergebnis des Ping in eine .tmp Datei schreibe und diese dann anschließend auslesen oder wie kann ich das lösen?
Bin für jeden Tipp dankbar
Mitglied: davidl
18.11.2011, aktualisiert 18.10.2012
So eine ähnliche Frage hatte ich auch mal

http://www.administrator.de/forum/ping-errorlevel-auswerten-bzw.-header ...

Die erste Antwort hat mir da sehr geholfen wie man einen Ping auswerten kann.

Lg David
Bitte warten ..
Mitglied: donnerkai
18.11.2011 um 09:09 Uhr
Komme ich nicht so richtig mit weiter. Ich komme auch mit der Syntax nicht klar.

Ich brauche quasi die Syntax für folgenden Klartest

wenn Suchstring "XYZ" in Datei "XYZ" vorhanden
dann Ausgabe "Fehler"
ansonsten goto nächster Schritt
Bitte warten ..
Mitglied: ITSchlumpf
18.11.2011 um 09:21 Uhr
Hi,

du kannst deine IP-Adressen in ein Textfile schreiben, dieses Auslesen und dann jede IP-Adresse anpingen und schauen ob ein errorlevel übergeben wird.

01.
SetLocal 
02.
Set Rechner=rechner.txt 
03.
 
04.
for /f %%r in (%Rechner%) do (call :ping %%r) 
05.
goto :eof 
06.
 
07.
:ping 
08.
Set rechner=%1 
09.
ping -n 1 %rechner% 
10.
if %errorlevel%==0 (goto :eof) else (goto :error) 
11.
 
12.
:error 
13.
net send (Rechnername wo popup aufpoppen soll) Rechner %rechner% ist nicht erreichbar 
14.
 
15.
:eof
Das script ist ungetestet, sollten fehler auftauchen, bischen ausprobieren und vll findest du den fehler ansonsten nochmal melden ;)

Gruß
Schlumpf
Bitte warten ..
Mitglied: donnerkai
18.11.2011 um 09:53 Uhr
Also funktioniert nicht, liegt aber wahrscheinlich an mir.
Ich komme mit der Syntax nicht klar.

Also... line 2 - Du holst Dir die Rechner IP aus der Datei rechner.txt. Diese habe ich angelegt und zunächst mit einer IP Adresse bestückt
line 4 eine FOR Schleife mit der Du die unterschiedlichen IP durchtickerst
line 7 verstehe ich nicht. müsste es dazu nicht dann auch einen goto :ping geben?

wie erfolgt die Trennung der verschiedenen IP Adressen in der Textdatei? Einfach immer eine neue Zeile?

Ich habe momentan keine Funktion mit dem Skript und egal was ich für eine IP eintrage auch keinen Rückgabewert.

Bitte warten ..
Mitglied: ITSchlumpf
18.11.2011 um 10:16 Uhr
Okay ich probier grad mal woran es liegt. Was für ein Betriebssystem nutzt du?

Gruß

[Edit] Zu deinen Fragen.

Zu der Schleife Line4 -> Der geht Zeile für Zeile die Variable Rechner durch und holt sich jedesmal die nächste IP-Adresse.
Line 7 -> Schau mal bei der Schleife. da habe ich ein "do call :ping %%r" mittels diesen befehls wird die subroutine ":ping" aufgerufen und der wert "%%r " wird mit übergeben.

01.
SetLocal 
02.
Set "Rechner=rechner.txt" 
03.
 
04.
for /f %%r in (%Rechner%) do (call :ping %%r) 
05.
goto :eof 
06.
 
07.
:ping 
08.
Set rechner=%1 
09.
ping -n 1 %rechner% 
10.
 
11.
if %errorlevel%==0 (goto :eof) else (goto :error) 
12.
 
13.
:error 
14.
 
15.
net send rechnername aber nur wenn du xp nutzt da Win7 kein net send mehr hat 
16.
 
17.
:eof
Also bei mir läuft das so durch. Falls es bei dir nicht geht, baue ein paar pausen an verschiedenen Stellen ein um zu sehen was für eine Meldung kommt bzw wo er stehen bleibt.

Gruß
Schlumpf

[/edit]
Bitte warten ..
Mitglied: potshock
18.11.2011 um 10:33 Uhr
Hi donnerkai,

schau mal hier auf meiner kleinen Page:
http://www.tackys-support.de/xptips.htm#N4
Aber ab Vista gibt es kein net send mehr, da musst du dann msg verwenden.

Potshock
Bitte warten ..
Mitglied: donnerkai
18.11.2011 um 11:16 Uhr
Ok, ich habe den Fehler gefunden. Er kann mir den net send Befehlt nicht schicken. Ich nutze allerdings XP und es sollte funktionieren.
Die Meldung sagt mir, dass mein Rechner nicht vorhanden sei oder die Verbindung getrennt sei.

Das Skript an sich arbeitet also gut.
Woran das mit meinem PC jetzt liegt weiss ich allerdings auch nicht.

msg funktioniert aus dem gleichen Grund nicht.
Bitte warten ..
Mitglied: potshock
18.11.2011 um 11:38 Uhr
Hi donnerkai,

ist denn der Nachrichtendienst überhaupt gestartet?
Ab Sp3 glaube ich war der deaktiviert worden bzw. Tools wie Xp Antispy etc. schaltete diesen auch häufig ab.
Ist der Nachrichtendienst eventuel durch eine Firewall geblockt?

Potshock
Bitte warten ..
Mitglied: donnerkai
18.11.2011 um 11:49 Uhr
Ok, ich habe es. Ich musste meinen Usernamen angeben und nicht den Rechnernamen. Dann funktioniert msg


Danke! Wunderbar gelöst
Bitte warten ..
Mitglied: ITSchlumpf
18.11.2011 um 12:17 Uhr
Bitte gerngeschehen Helfen ja gerne.

Gruß und schönes Wochenende

ITSchlumpf
Bitte warten ..
Mitglied: donnerkai
18.11.2011 um 12:29 Uhr
Jetzt läuft es und schwupps habe ich schon neue Begehrlichkeiten

Ich möchte gerne, dass die Datei immer wieder neu durchläuft. Das Skript habe ich entsprechend geändert. Geht das so:

SetLocal
Set Rechner=rechner.txt
:start
for /f %%r in (%Rechner%) do (call :ping %%r)
goto :eof
:ping
Set rechner=%1
ping -n 1 %rechner%
if %errorlevel%==0 (goto :start) else (goto :error)
:error
msg %username% Rechner %rechner% ist nicht erreichbar


Wie kann ich feststellen ob es noch läuft und vor allem wie kann ich es wieder beenden?
Ich möchte die Datei gerne auch an Kollegen weitergeben und habe deshalb den Usernamen als Variablenabfrage hinterlegt.

Kann ich das noch mit Batch lösen oder muss ich da schon auf eine Programmiersprache umsteigen ?
:eof
Bitte warten ..
Mitglied: ITSchlumpf
18.11.2011 um 12:38 Uhr
Benutze bitte wenn du Code hier reinschreibst die Textformatierung <.code><./code> (ohne Punkt)

Richte dir doch einfach nen Task ein der alle x Minuten die batch aufruft und laufen lässt. Ansonsten musst ne endlosschleife bauen.

01.
:set 
02.
SetLocal 
03.
Set Rechner=rechner.txt 
04.
:start 
05.
for /f %%r in (%Rechner%) do (call :ping %%r) 
06.
goto :set 
07.
:ping 
08.
Set rechner=%1 
09.
ping -n 1 %rechner% 
10.
if %errorlevel%==0 (goto :start) else (goto :error) 
11.
:error 
12.
msg %username% Rechner %rechner% ist nicht erreichbar  
13.
:eof
Ungetest

Zum beenden gehst halt in das Batchfenster und drückst STRG-C dann bricht er ab.
Das könntest du dir aber eben mittels Taskplaner ersparen, da dieser sobald der PC aus ist ja nicht mehr läuft.

Gruß
Schlumpf
Bitte warten ..
Mitglied: donnerkai
18.11.2011 um 12:56 Uhr
Also ich hätte es ja gerne so, dass nur die Fehlermeldung sichtbar ist und der Rest unsichtbar läuft. Somit könnte ich ja dann auch nicht mehr ins Batch Fenster und STRG + C geht auch nicht.


ich nerve schon, gell?
Bitte warten ..
Mitglied: ITSchlumpf
18.11.2011 um 13:03 Uhr
Nö nervst nicht ^^
Wenn du es so haben willst, dann lege dir im Taskplaner einen Task an, weil der startet die Batch ohne das du es siehst und dann bekommst du immer nur die Fehlermeldungen.
Stoppen kannst du die Batch dann über Taskplaner -> task stoppen.
Die Batch händisch starten und dann silent weiter laufen lassen, habe ich keine Ahnung wie das geht sry.

Gruß
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch um mehrere IP-Adressen via Ping auf Erreichbarkeit zu prüfen (5)

Frage von Galindiesel zum Thema Batch & Shell ...

Google Android
ANDROID - PING (2)

Frage von MrRobot1997 zum Thema Google Android ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...