Ping z Windows 7 nie otrzymuje odpowiedzi, ale ustawia poziom błędu na 0
10
Z komputera z systemem Windows 7 pinguję adres IP wyłączonej maszyny.
C:\>ping 192.168.1.222
Pinging 192.168.1.222 with 32 bytes of data:
Reply from 192.168.1.222: Destination host unreachable.
Reply from 192.168.1.222: Destination host unreachable.
Reply from 192.168.1.222: Destination host unreachable.
Ping statistics for 192.168.1.222:
Packets: Sent = 3, Received = 3, Lost = 0 (0% loss)
Nawet jeśli nie ma odpowiedzi, poziom błędu jest ustawiony na 0.
Co próbuję zrobić, to dowiedzieć się, czy zdalny komputer odpowiada na ping. Jednym z moich testów jest wyłączenie maszyny i pingowanie jej. Z jakiegoś powodu ping ustawia poziom błędu na 0.
Dzieje się tak, ponieważ miejsce docelowe znajduje się w lokalnej podsieci. Jeśli miejsce docelowe znajduje się poza podsiecią lokalną, oczekiwane Request timed out. jest widziany. Jednak nawet nieistniejące miejsca docelowe w lokalnej podsieci będą zgłaszane Reply from x.x.x.x: Destination host unreachable.. Tak jak ten słup z hydromasażem wyjaśnia to, wszystko zależy od tego, czy jego pierwszy skok przekroczył limit czasu - a pingowanie lokalnej podsieci to tylko jeden skok. Najwyraźniej to z założenia że poziom błędu jest ustawiony na 0 gdy każdy odpowiedź została odebrana, a host unreachable liczy się jako odpowiedź.
Następujące polecenie pinguje go raz ( ping -n 1 ). The %1 jest pierwszym parametrem przekazanym do pliku wsadowego. Zmienna attrib jest ustawiana w zależności od tego, czy miejsce docelowe odpowiada, czy nie.
echo Scanning %1
set attrib=responding
ping -n 1 %1|Findstr /I /C:"timed out" /C:"host unreachable" /C:"could not find host"
if %errorlevel%==0 set attrib=nonresponsive
Oddzielne narzędzie
Jest to interesujące narzędzie żywy . Nie wypróbowałem go i został wydany w 2002 roku, więc może nie działać nawet w systemie Windows 7. Jeśli jednak zadziała, ustawi poziom błędu na 2, gdy host docelowy jest nieosiągalny. Nie poleciłbym tego jednak.
+1 dla alive, używane także wiele lat temu, z tego właśnie powodu.
Bryan
Jeśli odpowiedź brzmi „Żądanie ping nie może znaleźć hosta madeup04. Sprawdź nazwę i spróbuj ponownie” to nie działa, ponieważ szuka „hosta nieosiągalnego”, więc twoim wynikiem jest „madeup04 odpowiada”, co jest błędne.
James Jenkins
1
@JamesJenkins Założyłem, że podobnie jak w pytaniu, próba pingowania jest przeciwko adresowi IP. Nawet wtedy jest to banalna zmiana (dodaj kolejną /C szukana fraza). Prawie nie warto mieć downvote. W tej chwili poprawiłem odpowiedź, więc dziękuję za wskazanie tego.
Bob
Ugh ... cóż, to głupie ... Spędziłem pół dnia, próbując dowiedzieć się, dlaczego mój system zgłaszał podsystem jako online - podczas gdy najwyraźniej nie ...
Matt Clark
7
Stałem także przed problemem i rozwiązałem go kluczem ” -w 2000 „
Ping uzupełniony kluczem ” -w „i liczba milisekund powraca 1 gdy host w lokalnej podsieci jest nieosiągalny.
AFAIK, liczba milisekund musi być mniejsza niż limit czasu po tym, jak podsystem sieciowy Windows zwróci „Host docelowy nieosiągalny”.
Pingowanie 192.168.10.22 z 32 bajtami danych: Odpowiedź od 192.168.10.2: Host docelowy nieosiągalny. Odpowiedź od 192.168.10.2: Host docelowy nieosiągalny. Odpowiedź od 192.168.10.2: Host docelowy nieosiągalny. Odpowiedź od 192.168.10.2: Host docelowy nieosiągalny.
Statystyki pingowania dla 192.168.10.22: Pakiety: Wysłane = 4, Otrzymane = 4, Utracone = 0 ( 0% straty ),
C: & gt; echo% errorlevel% 0
ale
C: & gt; ping -w 2999 192.168.10.22
Pingowanie 192.168.10.22 z 32 bajtami danych: Upłynął limit czasu żądania. Upłynął limit czasu żądania. Upłynął limit czasu żądania. Upłynął limit czasu żądania.
Statystyki pingowania dla 192.168.10.22: Pakiety: Wysłane = 4, Otrzymane = 0, Utracone = 4 ( 100% straty ),
alive
, używane także wiele lat temu, z tego właśnie powodu./C
szukana fraza). Prawie nie warto mieć downvote. W tej chwili poprawiłem odpowiedź, więc dziękuję za wskazanie tego.Stałem także przed problemem i rozwiązałem go kluczem ” -w 2000 „ Ping uzupełniony kluczem ” -w „i liczba milisekund powraca 1 gdy host w lokalnej podsieci jest nieosiągalny. AFAIK, liczba milisekund musi być mniejsza niż limit czasu po tym, jak podsystem sieciowy Windows zwróci „Host docelowy nieosiągalny”.
Na moim komputerze (Windows 7):
C: & gt; ping -w 3000 192.168.10.22
Pingowanie 192.168.10.22 z 32 bajtami danych:
Odpowiedź od 192.168.10.2: Host docelowy nieosiągalny.
Odpowiedź od 192.168.10.2: Host docelowy nieosiągalny.
Odpowiedź od 192.168.10.2: Host docelowy nieosiągalny.
Odpowiedź od 192.168.10.2: Host docelowy nieosiągalny.
Statystyki pingowania dla 192.168.10.22:
Pakiety: Wysłane = 4, Otrzymane = 4, Utracone = 0 ( 0% straty ),
C: & gt; echo% errorlevel%
0
ale
C: & gt; ping -w 2999 192.168.10.22
Pingowanie 192.168.10.22 z 32 bajtami danych:
Upłynął limit czasu żądania.
Upłynął limit czasu żądania.
Upłynął limit czasu żądania.
Upłynął limit czasu żądania.
Statystyki pingowania dla 192.168.10.22:
Pakiety: Wysłane = 4, Otrzymane = 0, Utracone = 4 ( 100% straty ),
C: & gt; echo% errorlevel%
1
źródło
-w
przełączyć na 2999 przeciwko poprawnemu i nieprawidłowemu adresowi IP, dodając-n 1
przełącznik. Wydaje się działać.To działa dla mnie na Windows 7:
źródło