Pingen erfolgreich obwohl Zielhost offline?

Dreadslayer

Lt. Junior Grade
Registriert
Feb. 2008
Beiträge
314
C:\Users\Admin>ping 192.168.1.2

Ping wird ausgeführt für 192.168.1.2 mit 32 Bytes Daten:
Antwort von 192.168.1.4: Zielhost nicht erreichbar.
Antwort von 192.168.1.4: Zielhost nicht erreichbar.
Antwort von 192.168.1.4: Zielhost nicht erreichbar.
Antwort von 192.168.1.4: Zielhost nicht erreichbar.

Ping-Statistik für 192.168.1.2:
Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0
(0% Verlust),


Kann mir jemand erklären, weshalb 0% Verlust in der Statistik steht, aber der Zielhost Offline ist?

Ich hätte nämlich gerne eine Batch, welche die Verfügbarkeit des Zielhosts überprüft:

@echo off
echo Ping... Please wait...
Ping 192.168.1.9 | find "Reply"
if errorlevel 2 echo ...offline
if errorlevel 1 echo ...online

Vielen Dank für Eure Hilfe!

MfG
Dread
 
Die 192.168.1.4 antwortet dir nicht die 192.168.1.2
 
schon mal interessant, dass eine ganz andere IP antwortet / nicht antwortet als angefordert.
Vielleicht steckt darin schon mal des Pudels Kern?
 
Ich möchte doch überprüfen, ob 192.168.1.2 erreichbar ist und anhand dessen eine Antowort ausgeben. Wieso antwortet nun 192.168.1.4? Was verstehe ich nicht? :D

Edit: Von 192.168.1.4 wurde der Pingauftrag gesendet.
 
Wäre gut zu wissen was die 4 und was die 2 bei dir ist ?
Gateway, Router, PC ?
Dann kann man vll. nachvollziehen warum die 4 antwortet.
Vermute mal das die 4 ein Router ist und die 2 dahinter sitzen soll ?
 
Nein, leider nicht. 192.168.1.4 ist ein PC, von welchem der Pingauftrag gesendet wird, 192.168.1.2 ist auch ein PC.
 
läuft bei mir genauso ab. wenn etwas nicht gefunden wird, meldet mein rechner mir, dass der zielhost nicht erreichbar ist. vllt ist er ja die 4 in seinem netz? egal...
Code:
goto main

:offline
echo Server offline...
exit 0

:online
echo Server online...
exit 1

:main
ping <ip> | find "Zielhost nicht erreichbar" > nul
if errorlevel 0 goto offline
if errorlevel 1 goto online
 
Zuletzt bearbeitet:
Hallo,

in deinem Script:
Ping 192.168.1.9 | find "Reply"

kannst du das "Reply" mit "TTL" ersetzen - dann klappt es auch wenn ein anderer Ho(r)st antwortet.
Da das "TTL" nur vom richtigen Ziel mit zurückkommt.
 
Wenn das alles PC's sind die an einem Switch hängen, dann ist das aber komisch das die 4 antwortet.
nutze mal tracert anstelle von ping !
eine komplette Info zu deinem Netzwerk wäre auch hilfreich, IP's, Subnetmasken, Gateway, etc.
 
Erst mal sind deine Error-Levels auch falsch...
errorlevel 1 oder höher = nicht gefunden
errorlevel 0 = Treffer

Ich würde das hier nehmen für die verschiedenen Möglichkeiten:
Code:
@echo off
echo Ping... Please wait...
Ping %1 -n 1 > %TEMP%\pingres.txt
find "100%% Verlust" %TEMP%\pingres.txt > nul
if errorlevel 1 goto keinVerlust
if errorlevel 0 goto offline
:keinVerlust

find "nicht erreichbar" %TEMP%\pingres.txt > nul
if errorlevel 1 goto erreichbar
if errorlevel 0 goto offline
:erreichbar

echo ...online
goto ende

:offline
echo ...offline

:ende
del %TEMP%\pingres.txtt

Das Script pingt nur ein mal, schaut ob es zu Verlust kam, falls nicht schaut es eben, ob der Zielhost evtl nicht erreichbar ist...

@claw: Dein Script funktioniert nicht, errorlevels müssen von oben nach unten geprüft werden... und "exit" finde ich in einer Batch schon ein wenig krass, soll sich das Fenster etwa gleich schießen? Was bringt die Ausgabe dann?
 
Zuletzt bearbeitet:
Vielen Dank für Eure Antworten! Die Batch überprüft nun korrekt, habe "Reply" ersetzt, wie Marjoker gesagt hat:

@echo off
echo Ping... Please wait...

ping 192.168.1.2 | find "TTL"
if errorlevel 1 goto offline

echo Server online...
pause
exit

: offline
echo Server offline...
pause
exit

Trotzdem seltsam, dass 192.168.1.4 antwortet...

@1668mib: Hattest recht, errorlvl waren falsch, aber das Problem war ja vorerst ein anderes. Dieses hätte man schnell mit try&error gelöst ;)
 
Zuletzt bearbeitet:
1668mib schrieb:
@claw: Dein Script funktioniert nicht, errorlevels müssen von oben nach unten geprüft werden...
habs ja au nur quick n dirty gemacht und nich getestet. es geht ja nur ums prinzip und anscheinend kennt sich der te ja schon mit batch ein wenig aus -> hätte alles auch selbst fixen können.
1668mib schrieb:
und "exit" finde ich in einer Batch schon ein wenig krass, soll sich das Fenster etwa gleich schießen? Was bringt die Ausgabe dann?
ich weiß ja nicht wofür er es nutzt. ggf. bindet er es irgendwo in ein samurize script ein und bekommt statt einem fenster eine nette ausgabe auf dem desktop. oder er bindet es in andere programme ein. da bewirkt im batch script ein return code schon vieles. ;)
 
Wenn dein Rechner als DNS arbeitet ist es nicht so ungewöhnlich... hast du irgendeine Verbindungsfreigabe aktiv?
 
Dreadslayer schrieb:
Trotzdem seltsam, dass 192.168.1.4 antwortet...


Dein PC verhält sich in diesem Fall wie ein Router. Dein PC hat nämlich das Netz 192.168.1.0/24 direkt verbunden und kann damit auf die PCs im lokalen Netz ohne Umweg über einen anderen Router zugreifen.

Wenn ein Router ein Packet forwarded, dessen Destination IP er direkt verbunden hat (directly connected), den Host aber nicht per ARP auflösen kann, dann antwortet er mit einem ICMP Destination Unreachable (Host unreachable) - auf deutsch: Zielhost nicht erreichbar.

Da dein eigener PC in diesem Fall dieses Netz direkt verbunden hat reagiert er ähnlich wie ein Router und du siehst eine ICMP Antwort von deinem eigenen PC, mit der Antwort Zielhost nicht erreichbar.


Das Errorlevel sollte imo in einer solchen Situation aber nicht 0 sein ...
 
Der errorlevel bezieht sich auf 0 und warum passiert das nur so selten? Warum verhält sich sein Rechner da wie ein Router? Du hast das Verhalten erklärt, aber nicht das warum...
 
Was meinst du mit so selten? Das passiert immer, wenn ein lokaler Host nicht erreichbar ist.

Wenn du auf deinem PC die 192.168.1.4 hast (Subnetmask: 255.255.255.0) dann ist dein lokales Netz 255 IP Adressen (192.168.1.0 - 192.168.1.255).

Wenn dein Router eine dieser IP Adressen zu erreichen versucht, löst er sie per ARP auf - kann er das nicht, dann wird die Antwort Zielhost nicht erreichbar generiert.


Wenn du allerdings eine IP Adresse zu pingen versuchst, die nicht in diesem Range liegt, die der PC lokal verfügbar hat, in diesem Beispiel 192.168.0.5 oder 172.16.5.5, dann wird natürlich keine ARP Anfrage verschickt, sondern das IP Paket direkt an deinen Default Gateway weitergeleitet. Wenn dein Router dann grade online ist, wird das Paket ins Internet geschickt und wahrscheinlich an den BGP Routern deines Providers (oder auch früher) verworfen, da es sicht nicht um public routable Adressen handelt (möglicherweise wird auch da ein Zielhost nicht erreichbar generiert - aber nicht notwendigerweise).

Wenn du eine öffentliche IP Adresse pingst, die durch einen Firewall nicht pingbar ist, dann ist der Zielhost sehr wohl erreichbar, er antwortet nur nicht aufs ICMP Request, deshalb gibt es einen Timeout, was sich dann auch im errorlevel widerspiegelt.


Ich hoffe das war halbwegs verständlich.
 
Ah ok ja, bin nur verwirrt, irgendwie hat sich da das Ping bei mir mal unterschiedlich verhalten - oder vielleicht spielt mir auch eher mein Gedächtnis ein Streich. ABer ja, passt schon.
 
Es kann sich bei einen Remote Netz natürlich auch unterschiedlich verhalten und zwar:

- wenn der Remote Router den Host im Ethernet Segment nicht per ARP auflösen kann und ICMP unreachables eingeschaltet sind --> Zielhost nicht erreichbar --> errorlevel 0

- wenn der Remote Router den Host im Ethernet Segment nicht per ARP auflösen kann und ICMP unreachables ausgeschaltet sind --> keine Antwort - Timeout --> errorlevel non-0

In beiden Fällen ist der Host nicht online, abhängig von der Router Konfiguration bekommst du eine ICMP Antwort oder nicht und ergo auch ein anderes Errorlevel.
 
Wobei der errorlevel ja nicht vom ping-Befehl kommt, sondern von find...
 
Zurück
Oben