2009-05-28 12 views

Odpowiedz

9

Narzędzie ping zwraca wyjścia stan zero, jeżeli co najmniej jeden reakcji było słychać z podanego gospodarza; status dwóch, jeśli transmisja zakończyła się powodzeniem, ale nie otrzymano odpowiedzi ; lub inna wartość (z), jeśli wystąpił błąd .

http://www.manpagez.com/man/8/ping

rzeczywistych wartości zwrotnych może zależeć od Twojego systemu.

14

Google is your friend.

czwarte ogniwo w dół jest this który stanowi:

Jeśli ping nie nie otrzyma żadnej odpowiedzi pakietów w ogóle nastąpi wyjście z kodem 1. Jeśli liczba pakietów i termin są określone, a mniej niż liczba pakietów zostanie odebranych do czasu nadejścia terminu, to również zakończy się kodem 1. Na inny błąd kończy się kodem 2. W przeciwnym razie kończy się kodem o numerze 0. Dzięki temu można użyć kodu wyjścia, aby sprawdzić, czy host jest żywy, czy nie.

Do listy wyników:

  • sukcesu: Kod 0
  • Brak odpowiedzi: 1 Kod
  • Inne błędy: Kod 2

Zauważ, że strona I odwołuje się do mówi "Linux/Unix ping command", ale inne systemy, a może nawet warianty systemu Linux i Unix, mogą zmieniać tę wartość.

Jeśli to możliwe, chciałbym przetestować w danym systemie, aby upewnić się, że masz właściwe.

0

Wypróbuj man ping z wiersza poleceń. Wartości zwracane są wymienione w dolnej części.

+3

Nie, nie są. Na przykład GNU ping wydaje się zwracać 255, jeśli nie dałeś mu wystarczająco dużo czasu na wysłanie wszystkich pakietów. To wydaje się być udokumentowane nigdzie. –

9

Warto przeprowadzić pewne testy na tym systemie operacyjnym. mi.g na OSX

rozróżnialnych gospodarza, który jest gotowy

ping -c 1 google.com ; echo $? 

Odpowiedzi:

PING google.com (173.194.38.14): 56 data bytes 
64 bytes from 173.194.38.14: icmp_seq=0 ttl=51 time=16.878 ms 

--- google.com ping statistics --- 
1 packets transmitted, 1 packets received, 0.0% packet loss 
round-trip min/avg/max/stddev = 16.878/16.878/16.878/0.000 ms 

Zwraca

0 

rozróżnialnych gospodarza, który jest w dół/nie odpowiada na ping

ping -c 1 localhost ; echo $? 

Odpowiedzi:

PING stuart-woodward.local (127.0.0.1): 56 data bytes 

--- stuart-woodward.local ping statistics --- 
1 packets transmitted, 0 packets received, 100.0% packet loss 

Powroty:

2 

dla rozróżnialnych gospodarza

ping -c 1 sdhjfjsd ; echo $? 

Odpowiedzi:

ping: cannot resolve sdhjfjsd: Unknown host 

Powroty:

68 
0

Udane połączenie będzie zawsze zwraca kod 0, podczas gdy połączenia nie powiodło się zawsze zwraca kod 1 i powyżej.

Aby to przetestować, wypróbować ten fragment

#!/bin/bash 
light_red='\e[1;91m%s\e[0m\n'      
light_green='\e[1;92m%s\e[0m\n'     
ping -c 4 -q google.comz       
if [ "$?" -eq 0 ]; then       
    printf "$light_green" "[ CONNECTION AVAILABLE ]" 
else            
    printf "$light_red" "[ HOST DISCONNECTED ]"  
fi 
0

Należy również wziąć pod uwagę, że jeśli ping np odbiera „sieci nieosiągalny” odpowiedź ICMP, będzie ona liczona jako post zatem zwraca sukces status 0 (testowany z pingiem cygwin w systemie Windows). Tak naprawdę nie jest to przydatne do testowania, czy host jest żywy i IMO jest błędem.

Powiązane problemy