teamdj
Goto Top

Per Batch Datei Ping senden wenn Ping Erfolgreich Test ausgeben !

Hallo,

Ich möchte per Batch-Datei einen Ping senden.

Beispiel:

@echo off

ping 192.168.0.1
cmd /k

Das Funktioniert auch bereits.

Ist es jedoch möglich, wenn der Ping erfolgreich war bzw.
Eine Antwort von der IP-Adresse gekommen ist
einen Text aus zu geben ?

Beispielsweise:
"Die Verbindung ist vorhanden"
und wenn die Verbindung vorhanden ist bzw. der Ping
erfolgreich gesendet wurde mit einem "OK-Button" die Batch-Datei zu beenden.

und wenn der Ping nicht erfolgreich war einen Text aus zu geben
Beispielsweise:
"Das Gerät konnte nicht erreicht werden bitte Überprüfen sie die Verbindung"

und mit einen "Wiederholen-Button" den Ping nochmals zu senden


vielen Dank im voraus für die Hilfe.

Content-ID: 321008

Url: https://administrator.de/contentid/321008

Ausgedruckt am: 22.11.2024 um 06:11 Uhr

Radioflyer
Radioflyer 15.11.2016 aktualisiert um 07:47:59 Uhr
Goto Top
Moin,

hat mich auch interessiert und daher Google befragt:

Die Doku von Hannes Schurig fand ich super:

Möchte man die tatsächliche Erreichbarkeit des Ziel-Clients erfassen ist folgender Weg nötig:

1 set ipnetz=192.168.178
2 set serverip=88
3 ping %ipnetz%.%serverip% -n 2 -w 1000 -l 2000
4 if %errorlevel%==1 echo Fehler

Mit -l wird die Größe des Ping Pakets bestimmt, -w bestimmt die Wartezeit in Millisekunden. Beide Parameter in Kombination sorgen dafür, dass der Ping nur noch eine Zeitüberschreitung oder einen Erfolg liefern kann. Das Verwenden von Errorlevel ist somit also sicher.

Alternative:

1 ping %server_ip_complete% -n 1 | find /i "TTL" >nul 2>&1
2 if errorlevel 1 (
3 echo Server offline
4 )

Ähnliche Suchbegriffe sollten Dir auch hier direkt auf der Seite weiterhelfen.

cheerz, RF
MrCount
MrCount 15.11.2016 um 07:55:02 Uhr
Goto Top
Servus,


also ich hatte mir mal eine kleine Batch gebastelt, die IPs aus einer Datei (ip.list) pingt und das Ergebnis in ein Logfile (result.log) schreibt...

@echo off
setlocal enabledelayedexpansion

:start
FOR /f %%f IN (ip.list) DO (
set "Erfolg=NEIN"  
set "Zeit="  
for /f "tokens=7 delims==< " %%i in ('ping -n 1 %%f^|findstr "TTL"') do (  
set "Zeit= - %%i"  
set "Erfolg=JA"  
)
>>result.log echo %%f - %date%-%time% - !Erfolg!!Zeit!
)
goto start
teamdj
teamdj 15.11.2016 um 08:44:22 Uhr
Goto Top
Hallo Radioflyer,
ich kriege das nicht hin


habe das jetzt so :

@echo off
set ipnetz=192.168.0
set serverip=1
ping %ipnetz%.%serverip% -n 2 -w 1000 -l 2000
if %errorlevel%==1 echo Fehler
cmd /k


ich wollte aber gerne das eine Meldung per Msgbox erscheint "ob der Ping Erfolgreich war"
wenn der Ping Erfolgreich war dann mit OKButton bestätigen
wenn ncht erfolgreich war dann mit Wiederholen-Button
Radioflyer
Radioflyer 15.11.2016 aktualisiert um 09:00:53 Uhr
Goto Top
Zitat von @teamdj:

ich wollte aber gerne das eine Meldung per Msgbox erscheint "ob der Ping Erfolgreich war"
wenn der Ping Erfolgreich war dann mit OKButton bestätigen
wenn ncht erfolgreich war dann mit Wiederholen-Button

Moin,

insbesondere hier würde ich empfehlen, mal in AUTOIT zu schauen. Das Freewaretool ist
gigantisch und die Befehle hast Du ja soweit schon. Da ist Popup und alles kein Problem.
Schau mal die Beispiele an.

Aber Du kannst doch alternativ die Meldung ne Weile einblenden und danach automatisch mit
Wiederholen weitermachen. Was sonst würdest Du denn anklicken?

cheerz
RF
AnkhMorpork
AnkhMorpork 15.11.2016 um 09:01:26 Uhr
Goto Top
Powershell kann das auch:

If (Test-Connection CompiName -quiet) {machwas}
Else {machwasanderes}

Gruß

Ankh
MrCount
MrCount 15.11.2016 aktualisiert um 09:49:31 Uhr
Goto Top
Mit VBS gibt es auch nen "Button":

Datei: pingding.vbs
Set WshShell = CreateObject("WScript.Shell")  
repeat = True
ip = "127.0.0.1"  

Do
        PINGFlag = Not CBool(WshShell.run("ping -n 1 " & ip,0,True))  
	If PINGFlag = True Then
		m = MsgBox("Ping erfolgreich",vbOKOnly,"OK")  
		repeat = False
	Else
		m = MsgBox("Ping NICHT erfolgreich." & chr(10) & chr(13) & "Wiederholen?",vbRetryCancel,"Nicht OK")  
		If m = 2 Then repeat = False
		If m = 4 Then repeat = True
	End If
Loop While repeat
teamdj
teamdj 15.11.2016 um 11:12:09 Uhr
Goto Top
Hallo MrCount,

was für ein Befehl muß eingebaut werden, damit sich die Engabeaufforderung nicht schliesst
sondern offen bleibt.
Weil ich das jetzt in eine Textdatei gespeichert habe und als *.bat
gespeichert.
Wenn ich das ausführe, passiert zwar etwas aber ich kann es nicht sehen
da die engabeaufforderung sich gleich wieder schleißt.
MrCount
MrCount 15.11.2016 um 11:16:24 Uhr
Goto Top
Also wenn du den obigen Code genommen hast

Set WshShell = CreateObject("WScript.Shell")   
...

dann musst du das als vbs-Datei speichern, nicht als bat.
teamdj
teamdj 15.11.2016 um 12:09:44 Uhr
Goto Top
OK
ich habe das jetzt als *.vbs gespeichert.
Scheint zu funktionieren.
wäre aber schön wenn ich den Ablauf in einem Fenster verfolgen könnte
was im Hintergrund passiert.
teamdj
teamdj 15.11.2016 um 12:57:35 Uhr
Goto Top
Hallo MrCount,

das sieht schon einmal gut aus und wäre auch das was ich gesucht habe !!
Wäre aber schön wenn ich wie gesagt sehen könnte was im Hintergrund passiert !


ich habe das jetzt einmal verändert:

Set WshShell = CreateObject("WScript.Shell")
repeat = True
ip = "192.168.2.201"

Do
PINGFlag = Not CBool(WshShell.run("ping -n 1 " & ip,0,True))
If PINGFlag = True Then
m = MsgBox("Die Verbindung zum Web-IQ war erfolgreich ! sollten die Wäschen weiterhin nicht übertragen werden, liegt ein anderes Problem an ! Wenden Sie sich bitte an Sit-Pay Herr Hübner Tel 040 - 2442405586",vbOKOnly,"Verbindung zum Web-IQ ERFOLGREICH !")
repeat = False
Else
m = MsgBox("Die Verbindung zum Web-IQ konnte nicht aufgebaut werden !!" & chr(10) & chr(13) & "Wiederholen Sie den Vorgang ! Sollte wiedererwartend keine Verbindung aufgebaut werden prüfen Sie die Kabelverbindung im Schaltschrank" ,vbRetryCancel,"!! Achtung !! Fehler !!")
If m = 2 Then repeat = False
If m = 4 Then repeat = True
End If
Loop While repeat


kannst Du mir das bitte so verändert das bei Erfolgreichem Ping die Meldung so in der MsGBox kommt ?

Die Verbindung zum Web-IQ war erfolgreich !
Sollten die Wäschen weiterhin nicht übertragen werden, liegt ein anderes Problem an !

Wenden Sie sich bitte an Firma Sit-Pay
Herr Hübner Tel 040 - 2442405586
*

Also quasi untereinander in der MsgBox.

und wenn der Ping nicht erfolgreich war dann soll das so in der MsgBox angezeigt werden.
*
Die Verbindung zum Web-IQ konnte nicht aufgebaut werden !

Wiederholen Sie den Vorgang !
Sollte wiedererwartend keine Verbindung aufgebaut werden,
prüfen Sie die Kabelverbindung im Schaltschrank

auch untereinander.

Viiiilen Lieben Dank
Radioflyer
Radioflyer 15.11.2016 um 12:58:26 Uhr
Goto Top
Zitat von @teamdj:
wäre aber schön wenn ich den Ablauf in einem Fenster verfolgen könnte
was im Hintergrund passiert.
das hatten wir doch schon. Im Grunde kann das doch durchlaufen, wenn Du eh davor sitzt
und der bat zugucken willst kannst Du ja noch die Farbe für den Hintergrund in rot bei Fehler
und grün bei Erfolg einfärben (Befehl: color) ... ist dann bestimmt nett anzuschauen...

btw: was schafft ihr da den ganzen Tag face-smile

cheerz, RF
MrCount
MrCount 15.11.2016 um 13:32:53 Uhr
Goto Top
Die Zeilenumbrüche lassen ich mit dem
chr(10) & chr(13)
realisieren.

Also z.B.:
"Text" & chr(10) & chr(13) & "Text"

m = MsgBox("Die Verbindung zum Web-IQ war erfolgreich !" & chr(10) & chr(13) & "Sollten die Wäschen weiterhin nicht übertragen werden, liegt ein anderes Problem an !" & chr(10) & chr(13) & chr(10) & chr(13) & "Wenden Sie sich bitte an Sit-Pay" & chr(10) & chr(13) & "Herr Hübner Tel 040 - 2442405586",vbOKOnly,"Verbindung zum Web-IQ ERFOLGREICH !")   
teamdj
teamdj 15.11.2016 um 13:33:14 Uhr
Goto Top
Hallo Radioflyer,

OK ... wir schaffen hier genügend.
Es handelt sich um eine Waschstrasse.
Das Kassensystem sendent über die Kasse das gewählte Waschprogramm an
einen WEB-IQ welches sich in einem Schaltschrank befindet.
Das WEB-IQ gibt dann das Signal wiederum an die Waschstrasse weiter.
Wenn das Kassensystem jedoch das WEB-IQ über das Netzwerkkabel nicht erreichen kann
wird das Waschprogramm folgedessen auch nicht an die Waschstrasse übergeben.

Jetzt möchte ich eben diese *.bat datei haben damit die Kollegen die Verbindung testen können.
Ich kann das so erkennen wenn ich einen Ping sende.
Die Kollegen wissen damit leider nichts an zu fangen .... und fragen andauernd und rufen mich
deswegen auch in meiner Freizeit an. Das möchte ich vermeiden.

Das ist der Grund was dahinter steckt.

Leider functioniert das mit dem VBS -Code von MrCount doch nicht so super.
Wenn ich das Netzwerkkabel ziehe wird nach dem ersten ausführen des Codes zwar die Meldung ausgegeben,
das kein Ping gesendet werden konnte. Jedoch nach dem weiderholen ist der Ping erfolgreich trotzt
gezogenem Netzwerkkabel. Das kann im Grunde nicht sein !!!

Über die *.bat Datei functioniert das immer bei gezogenem Kabel.
MrCount
MrCount 15.11.2016 um 13:39:49 Uhr
Goto Top
Zitat von @teamdj:

Wäre aber schön wenn ich wie gesagt sehen könnte was im Hintergrund passiert !

Was soll da groß passieren?
Es wird gepingt und je nach Ergebnis "True" oder "False" gesetzt...

Wenn du dem Ping zuschauen willst, dann nimm eine Batch-Datei:

z.B.:
Datei: ip.list
192.168.2.201

Datei: pingding.bat
@echo off
setlocal enabledelayedexpansion

:start
FOR /f %%f IN (ip.list) DO (
set "Erfolg=NEIN"  
set "Zeit="  
for /f "tokens=7 delims==< " %%i in ('ping -n 1 %%f^|findstr "TTL"') do (  
set "Zeit= - %%i"  
set "Erfolg=JA"  
)
echo %%f - %date%-%time% - !Erfolg!!Zeit!
)
goto start
Radioflyer
Radioflyer 15.11.2016 um 13:48:26 Uhr
Goto Top
Hi teamdj,

das war auch nur als Spass zu verstehen. Aber Danke für die Hintergründe.
Ich würde da über die Farben nochmal nachdenken, das kapiert jeder, keiner
muss was klicken und das sieht man auch durch ne Fensterscheibe.
Klicken wollen die bestimmt auch nix.

COLOR 2F alles schön grün
COLOR 1C alles schön in rot

timeout /T 15 ( wartet 15 sec damit man ne Fehlermeldung lesen kann)

cheerz, RF
angel00031
angel00031 17.02.2023 um 15:55:23 Uhr
Goto Top
Hallo zusammen

ich habe eine Frage ich hab jetzt den Befehl genommen und will die IP Adresse vor der Abfrage immer ändern können. Könnt ihr mir bitte helfen?

Set WshShell = CreateObject("WScript.Shell")
repeat = True
ip = ""

Do
PINGFlag = Not CBool(WshShell.run("ping -n 1 " & ip,0,True))
If PINGFlag = True Then
m = MsgBox("Ping erfolgreich",vbOKOnly,"OK")
repeat = False
Else
m = MsgBox("Ping NICHT erfolgreich." & chr(10) & chr(13) & "Wiederholen?",vbRetryCancel,"Nicht OK")
If m = 2 Then repeat = False
If m = 4 Then repeat = True
End If
Loop While repeat
Radioflyer
Radioflyer 17.02.2023 um 16:09:58 Uhr
Goto Top
Danke für die Antwort auf meinen Artikel von 2016
angel00031
angel00031 17.02.2023 um 16:30:11 Uhr
Goto Top
Zitat von @Radioflyer:

Danke für die Antwort auf meinen Artikel von 2016

Mir hat das von 2016 schon so gewaltig geholfen nur eben noch das Problem das ich nicht drauf komme wie ich das mit Variablen IP Adressen machen kann
Radioflyer
Radioflyer 21.02.2023 um 17:16:59 Uhr
Goto Top
die Info kam ja von Mr. Count, bitte den anschreiben