Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Kann ausgeschalteten Rechner anpingen
- Ersteller ukr
- Erstellt am
cyberpirate
Fleet Admiral
- Registriert
- Jan. 2007
- Beiträge
- 22.752
Wie meinst du das, was soll ich abstellen?
Ergänzung ()
Selbstverständlich eingeschaltet. Ich meinte, warum kann ich den ausgeschalteten Rechner anpingen, nicht aber den im Ruhezustand.tRITON schrieb:Wake On Lan eingeschaltet? Warten deine Dose auf das Magic Paket?
Ich seh da keinen "erfolgreichen" Ping....
bei der Zeitüberschreitung antwortet keiner auf den Ping, und bei Zielhost nicht erreichbar, sagt dir dein Gerät mit der 110, das er die 112 nicht erreicht...
und formatiere bitte deinen Text...dann kann man auch "erkennen" was du meinst bzw. was Fragen sind und was "Daten" sind.
bei der Zeitüberschreitung antwortet keiner auf den Ping, und bei Zielhost nicht erreichbar, sagt dir dein Gerät mit der 110, das er die 112 nicht erreicht...
und formatiere bitte deinen Text...dann kann man auch "erkennen" was du meinst bzw. was Fragen sind und was "Daten" sind.
kartoffelpü
Vice Admiral
- Registriert
- Juni 2018
- Beiträge
- 6.581
Unterschied zwischen "Zielhost nicht erreichbar" und "Zeitüberschreitung der Anforderung" erklärt: https://sid-500.com/2017/01/20/ping-zeitueberschreitung-der-anforderung/
kartoffelpü
Vice Admiral
- Registriert
- Juni 2018
- Beiträge
- 6.581
Ah, das war (für mich) nicht ersichtlich.
Eventuell kannst du deinen ersten Post nochmal reparieren, bei einem Edit hast du es irgendwie geschafft, den kompletten Text zu verlinken.
Zum Verhalten des Exitcodes von ping: Scheint kein neues Verhalten zu sein. Siehe https://www.andysblog.de/windows-der-ping-rueckgabewert-ist-mitunter-auch-bei-nichterreichbarkeit-0
Dort ist auch ein Workaround drin.
Eventuell kannst du deinen ersten Post nochmal reparieren, bei einem Edit hast du es irgendwie geschafft, den kompletten Text zu verlinken.
Zum Verhalten des Exitcodes von ping: Scheint kein neues Verhalten zu sein. Siehe https://www.andysblog.de/windows-der-ping-rueckgabewert-ist-mitunter-auch-bei-nichterreichbarkeit-0
Dort ist auch ein Workaround drin.
und man kann mit Ping nicht "testen" ob der Rechner "da" ist oder nicht, das geht erst nachdem der WOL gesendet wurde und der Netzwerkstack dadurch hochgefahren wird.
@kartoffelpü you are not alone....
Deswegen schreib ichs auch nochmal lieber TE : Formatiere deinen Text im Ausgangspost, diese "Code/Verlinkungs"-Geschichte ist sch...
@kartoffelpü you are not alone....
Deswegen schreib ichs auch nochmal lieber TE : Formatiere deinen Text im Ausgangspost, diese "Code/Verlinkungs"-Geschichte ist sch...
Ich versuchs nochmal:
habe folgendes Problem. Wenn ich einen PC, der heruntergefahren ist, anpinge erhalte ich mit meinem Programm
@
folgende Meldung:
Ping wird ausgeführt für 192.168.178.112 mit 32 Bytes Daten:
Antwort von 192.168.178.110: Zielhost nicht erreichbar.
Antwort von 192.168.178.110: Zielhost nicht erreichbar.
Antwort von 192.168.178.110: Zielhost nicht erreichbar.
Antwort von 192.168.178.110: Zielhost nicht erreichbar.
Ping-Statistik für 192.168.178.112:
Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0
(0% Verlust),
D:\Bat-Dateien>echo Errorlevel = 0
Errorlevel = 0
D:\Bat-Dateien>if 0 == 0 (echo Rechner an ) else (echo Rechner aus )
Rechner an
D:\Bat-Dateien>pause
Drücken Sie eine beliebige Taste . . .
Ich kann dann den Rechner nicht aufwecken.
Wenn ich den Rechner aber in den Ruhezustand versetze, dann erhalte ich die Meldung:
Ping wird ausgeführt für 192.168.178.112 mit 32 Bytes Daten:
Zeitüberschreitung der Anforderung.
Zeitüberschreitung der Anforderung.
Zeitüberschreitung der Anforderung.
Zeitüberschreitung der Anforderung.
Ping-Statistik für 192.168.178.112:
Pakete: Gesendet = 4, Empfangen = 0, Verloren = 4
(100% Verlust),
D:\Bat-Dateien>echo Errorlevel = 1
Errorlevel = 1
D:\Bat-Dateien>if 1 == 0 (echo Rechner an ) else (echo Rechner aus )
Rechner aus
D:\Bat-Dateien>pause
Drücken Sie eine beliebige Taste . . .
Ich kann dann den Rechner aufwecken. Woran liegt das?
habe folgendes Problem. Wenn ich einen PC, der heruntergefahren ist, anpinge erhalte ich mit meinem Programm
@
Code:
@echo on
ping 192.168.178.112
echo Errorlevel = %errorlevel%
if %errorlevel%==0 (
echo Rechner an
) else (
echo Rechner aus
)
pause
Ping wird ausgeführt für 192.168.178.112 mit 32 Bytes Daten:
Antwort von 192.168.178.110: Zielhost nicht erreichbar.
Antwort von 192.168.178.110: Zielhost nicht erreichbar.
Antwort von 192.168.178.110: Zielhost nicht erreichbar.
Antwort von 192.168.178.110: Zielhost nicht erreichbar.
Ping-Statistik für 192.168.178.112:
Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0
(0% Verlust),
D:\Bat-Dateien>echo Errorlevel = 0
Errorlevel = 0
D:\Bat-Dateien>if 0 == 0 (echo Rechner an ) else (echo Rechner aus )
Rechner an
D:\Bat-Dateien>pause
Drücken Sie eine beliebige Taste . . .
Ich kann dann den Rechner nicht aufwecken.
Wenn ich den Rechner aber in den Ruhezustand versetze, dann erhalte ich die Meldung:
Ping wird ausgeführt für 192.168.178.112 mit 32 Bytes Daten:
Zeitüberschreitung der Anforderung.
Zeitüberschreitung der Anforderung.
Zeitüberschreitung der Anforderung.
Zeitüberschreitung der Anforderung.
Ping-Statistik für 192.168.178.112:
Pakete: Gesendet = 4, Empfangen = 0, Verloren = 4
(100% Verlust),
D:\Bat-Dateien>echo Errorlevel = 1
Errorlevel = 1
D:\Bat-Dateien>if 1 == 0 (echo Rechner an ) else (echo Rechner aus )
Rechner aus
D:\Bat-Dateien>pause
Drücken Sie eine beliebige Taste . . .
Ich kann dann den Rechner aufwecken. Woran liegt das?
Ergänzung ()
Ich kann doch mit Ping erfahren, ob ein Rechner erreichbar ist oder nicht. Wenn der Netzwerkstack hochgefahren ist, dann kann ich ihn doch anpingen oder nicht?MadMax_87 schrieb:und man kann mit Ping nicht "testen" ob der Rechner "da" ist oder nicht, das geht erst nachdem der WOL gesendet wurde und der Netzwerkstack dadurch hochgefahren wird.
@kartoffelpü you are not alone....
Deswegen schreib ichs auch nochmal lieber TE : Formatiere deinen Text im Ausgangspost, diese "Code/Verlinkungs"-Geschichte ist sch...
....
In deinem ersten Fall ist der Rechner aus!
Daher ist die Aussage deines "Programms" errorlevel=0 gleich "Rechner an" falsch!
Weil er eben nicht "an" ist...
Was soll dein Programm bezwecken?
Die Antwort zu deiner Ping-Stack Frage hast du ja schon zitiert...
Und zum Thema erreichbar: zieh mal das NT-Kabel ab, mach den ping und vergleiche den output von "Kabel ab,runtergefahren und Ruhezustand".
In deinem ersten Fall ist der Rechner aus!
Daher ist die Aussage deines "Programms" errorlevel=0 gleich "Rechner an" falsch!
Weil er eben nicht "an" ist...
Was soll dein Programm bezwecken?
Die Antwort zu deiner Ping-Stack Frage hast du ja schon zitiert...
Und zum Thema erreichbar: zieh mal das NT-Kabel ab, mach den ping und vergleiche den output von "Kabel ab,runtergefahren und Ruhezustand".
Raijin
Fleet Admiral
- Registriert
- Nov. 2007
- Beiträge
- 18.285
ping verhält sich an dieser Stelle leider nicht so wie man denken würde. Der errorlevel lässt sich nicht zuverlässig auswerten, weil der errorlevel von ping sich darauf bezieht ob eine Antwort eingegangen ist oder nicht - egal wie diese ausgesehen hat. Nur bei einem Timeout = nichts hat geantwortet gibt es errorlevel=1.
Für dieses Problem gibt es mehrere Lösungsansätze. Zum einen kann man statt des errorlevels die tatsächliche Ausgabe von ping parsen und zB nach dem Stichwort "TTL" suchen. Leider ist ping lokalisiert und somit kann es sprachenübergreifend zu Problemen führen, wenn man die batch zB auf ein anderes System kopiert. "TTL" ist zwar relativ sicher, aber Sprachen mit anderen Schriftzeichen können da einen Strich durch die Rechnung machen. Ok, wie wahrscheinlich es ist, dass man das auf ein kyrillisches Windows kopiert, sei mal dahingestellt.
Wie so oft ist in solchen Fällen allerdings PowerShell vorzuziehen. PowerShell hält sich deutlich strikter an gängige Konventionen in der Programmierung. Mit
Wenn's unbedingt in Batch sein soll, könnte man das zB so machen:
Wie beschrieben liefert Test-Connection hier ein True oder False zurück, was im PS-Command mittels if (negiert) geprüft und mit exit 1 quittiert wird, wenn der Test fehlschlägt - sonst kommt per default errorlevel 0 raus.
Für dieses Problem gibt es mehrere Lösungsansätze. Zum einen kann man statt des errorlevels die tatsächliche Ausgabe von ping parsen und zB nach dem Stichwort "TTL" suchen. Leider ist ping lokalisiert und somit kann es sprachenübergreifend zu Problemen führen, wenn man die batch zB auf ein anderes System kopiert. "TTL" ist zwar relativ sicher, aber Sprachen mit anderen Schriftzeichen können da einen Strich durch die Rechnung machen. Ok, wie wahrscheinlich es ist, dass man das auf ein kyrillisches Windows kopiert, sei mal dahingestellt.
Wie so oft ist in solchen Fällen allerdings PowerShell vorzuziehen. PowerShell hält sich deutlich strikter an gängige Konventionen in der Programmierung. Mit
Test-Connection 8.8.8.8 -Quiet
erhält man ein simples "False" oder "True" als Rückmeldung, je nachdem ob der Ping tatsächlich erfolgreich war oder nicht.Wenn's unbedingt in Batch sein soll, könnte man das zB so machen:
Code:
@ECHO OFF
PowerShell -Command "if (-Not (Test-Connection 8.8.8.8 -Quiet) ) { exit 1}"
IF "%errorlevel%"=="1" (
ECHO OFFLINE
) ELSE (
ECHO ONLINE
)
Wie beschrieben liefert Test-Connection hier ein True oder False zurück, was im PS-Command mittels if (negiert) geprüft und mit exit 1 quittiert wird, wenn der Test fehlschlägt - sonst kommt per default errorlevel 0 raus.
Vielen Dank für Deine informative Antwort (endlich mal). Meine Frage ging aber eigentlich dahin, warum ein Rechner, der heruntergefahren ist, diese vielleicht auch falsche Antwort liefert (Errorlevel = 0, Zielhost nicht erreichbar), während der Rechner, wenn er im Standby-Modus ist, die Antwort (Errorlevel = 1, Zeitüberschreitung der Anforderung) liefert. Hat die Netzwerkkarte bei den beiden Rechner-Zuständen einen anderen Funktions-Level? Vielleicht kann mir das jemand erklären?
kartoffelpü
Vice Admiral
- Registriert
- Juni 2018
- Beiträge
- 6.581
Raijin
Fleet Admiral
- Registriert
- Nov. 2007
- Beiträge
- 18.285
Das hat @kartoffelpü eigentlich schon getan und ist in dem Link erklärt:ukr schrieb:Vielleicht kann mir das jemand erklären?
kartoffelpü schrieb:Unterschied zwischen "Zielhost nicht erreichbar" und "Zeitüberschreitung der Anforderung" erklärt: https://sid-500.com/2017/01/20/ping-zeitueberschreitung-der-anforderung/
Vielleicht noch ein paar ergänzende Informationen dazu:
Netzwerkkommunikation ist komplexer als man denkt. Es gibt verschiedene Ebenen, die sogenannten OSI-Layer, auf die ich aber nicht näher eingehen möchte. Tatsache ist, dass ein "Ping" wie ein Brief an "Liebe Oma Erna" (=Ziel-IP) ist, den man anschließend in einen Briefumschlag mit der (MAC-)Adresse steckt. Um eben diese MAC-Adresse zu ermitteln, fragt der PC vor dem Abschicken des Pings erstmal per Rundruf ins Netzwerk (=Broadcast) "Hey Oma Erna, wo wohnst du?!?" und Oma Erna antwortet mit ihrer Adresse, die du dann auf den Briefumschlag schreibst und ihn dem Postbeamten in die Hand drückst.
Nun gibt es aber mehrere Situationen wie zB
1) Du hast Omas Adresse bekommen, schickst den Brief ab und bekommst nie eine Antwort (= Timeout). Was ist da los? Kann Oma nicht lesen? Hat sie vergessen zu antworten? Will sie nicht antworten? Kann sie nicht antworten? Ist Oma im Krankenhaus und hat den Brief noch gar nicht gelesen? Oder ist Oma tot?!?!?
Ping = Timeout = Error 1
2) Du hast Omas Adresse gar nicht erst bekommen, du hast also "no route to host" bzw. "Ziel ist nicht erreichbar". Das kann auch unterwegs passieren, also wenn du zwar Omas Adresse hast, aber der Postboste dann vor der Wohnung steht und ein anderer Name an der Tür steht. Aber immerhin weißt du, dass Oma so nicht erreichbar ist, du weißt also warum du keine Antwort von Oma bekommst, weil der Brief ja gar nicht angekommen ist.
Ping = Zielhost nicht erreichbar = Error 0
Natürlich hinkt die Analogie mit Oma Erna ein wenig und man weiß auch bei 2) nicht ob Oma noch lebt oder ob sie tot ist. Das ist aber sogesehen ein Problem, das sich im OSI-Modell weiter oben abspielt, also die Ebenen, in denen man anfängt, das Resultat des Pings zu beurteilen. Für den Ping ist seine Arbeit getan, er hat dir eine Antwort geliefert (error 0) und was du draus machst, ist dein Bier. Ich weiß, dieses Verhalten wirkt befremdlich, ist aber technisch gesehen absolut korrekt.
Deswegen ist Ping für diesen Zweck ungeeignet und man sollte lieber auf das oben dargestellte Beispiel mit dem PowerShell cmdlet "Test-Connection" arbeiten, das zwar auch nichts anderes macht als einen Ping abzusetzen, aber explizit mit dem Ziel, ein up/down zu ermitteln, wobei mit up = "Ziel antwortet rechtzeitig" und down = "Alles andere" einhergeht.
Ähnliche Themen
- Antworten
- 23
- Aufrufe
- 21.045
- Antworten
- 10
- Aufrufe
- 8.242
- Antworten
- 9
- Aufrufe
- 27.472