Il mio script Perl rimane bloccato con un exit status
quando si tenta di utilizzare il comando ping
.Stato di uscita del comando ping
risposta
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.
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.
Provare man ping
dalla riga di comando. I valori di ritorno sono elencati in basso.
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. –
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
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
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.
- 1. Uscita pipe e stato di uscita acquisizione in Bash
- 2. Errore di installazione del modulo Python: comando 'gcc' non riuscito con stato di uscita 1
- 3. Catturare codice di stato di uscita del processo figlio
- 4. Combinazione di stato in entrata + uscita +?
- 5. stato di uscita del canale ssh2_exec di PHP?
- 6. -il codice di uscita del comando non è uguale al codice di uscita di uno script
- 7. Test di uguaglianza stringa Bash (uscita del comando)
- 8. Sopprimere l'output del sistema ("ping") in C++
- 9. Codice di uscita di comando reindirizzate
- 10. Come ottenere una misurazione precisa del ping
- 11. Uso del ping in C#
- 12. Java. System.exit (stato int). Valore per lo stato di uscita
- 13. ImageMagick convertire lo stato di uscita 133
- 14. Bash condizionale al comando codice di uscita
- 15. uscita improvvisa con stato di -9
- 16. errore: comando 'gcc' fallito con stato di uscita durante l'installazione di psycopg2
- 17. fallito con stato di uscita 69
- 18. Ottenere il codice di stato di uscita dal comando "ftp" nella shell di linux
- 19. Uscita flusso del processo figlio in Ruby
- 20. Uscita comando Linux come parametro di un altro comando
- 21. Bash: verifica dello stato di uscita della catena di comando multi-pipe
- 22. Come si verifica uno stato di uscita diverso da zero di un comando in Bash?
- 23. Come ottenere la seconda colonna dall'output del comando? Uscita
- 24. MySQLdb Comando di installazione e installazione del connettore Python "gcc-4.2" non riuscito con stato di uscita 255
- 25. tempo medio estratto dal ping -c
- 26. Impossibile installare Orange: "errore: comando 'clang' non riuscito con stato di uscita 1"
- 27. comando 'gcc' non riuscita con stato di uscita 1 errore durante l'installazione Scrapy
- 28. Perché visualizzo l'errore: comando 'llvm-gcc-4.2' non riuscito con stato di uscita 1
- 29. Python bdist_rpm -ba: errore opzione sconosciuto: comando 'rpm' non riuscito con stato di uscita 1
- 30. Installare lxml su CentOS 7 - Errore: comando 'gcc' non riuscita con stato di uscita 4
Questo probabilmente appartiene a http://serverfault.com. –