2009-05-28 22 views

risposta

9

L'utilità ping restituisce un'uscita status di zero se almeno un risposta è stato sentito dalla host specificato; uno stato di due se la trasmissione ha avuto esito positivo ma non sono state ricevute risposte ; o un altro valore (da) se si è verificato un errore .

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

I valori di ritorno effettivi possono dipendere dal sistema.

14

Google is your friend.

Quarto collegamento verso il basso è this in cui si afferma:

Se ping non non riceve alcuna risposta pacchetti a tutto ciò che uscirà con il codice . Se vengono specificati un conteggio e una scadenza di pacchetto e meno di contare i pacchetti vengono ricevuti al momento della scadenza, uscirà anche con il codice 1. Su , l'altro errore viene chiuso con il codice 2. Altrimenti esce con codice 0. Ciò rende possibile usare il codice di uscita per vedere se un host è vivo o no.

per elencare i risultati:

  • di successo: codice 0
  • Nessuna risposta: codice 1
  • Altri errori: il codice 2

nota che la pagina mi lega ad dice "comando ping Linux/Unix", ma altri sistemi, o forse anche varianti di Linux e Unix, potrebbero variare questo valore.

Se possibile, testerei sul sistema in questione per assicurarmi di avere quelli giusti.

0

Provare man ping dalla riga di comando. I valori di ritorno sono elencati in basso.

+3

No, non lo sono. Ad esempio, il comando GNU ping sembra restituire 255 se non si è dato abbastanza tempo per inviare tutti i pacchetti. Questo sembra essere documentato da nessuna parte. –

9

Vale la pena eseguire alcuni test su questo sistema operativo. e.g su OSX

ospite risolvibile che è fino

ping -c 1 google.com ; echo $? 

Risposte:

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 

Returns

0 

ospite risolvibile che è giù/non risponde al ping

ping -c 1 localhost ; echo $? 

Risposte:

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 

Ritorni:

2 

ospitanti non risolvibile

ping -c 1 sdhjfjsd ; echo $? 

Risposte:

ping: cannot resolve sdhjfjsd: Unknown host 

Returns:

68 
0

connessione di successo restituirà sempre codice 0, mentre le connessioni fallite restituirà sempre codice 1 e sopra.

Per testare il tutto, provate questo frammento di

#!/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

Si dovrebbe anche prendere in considerazione che se il ping ad esempio riceve una 'rete non raggiungibile' risposta ICMP, sarà contato come risposta un restituisce quindi il successo stato 0 (testato con cygwin ping su windows). Quindi non molto utile per testare se un host è vivo e IMO un bug.

Problemi correlati