Come mostrare il ping fallito?


24

Quando usiamo il ping di Windows, mostrerà i ping falliti. Ubuntu ha una funzione simile?

Il ping non riuscito è molto utile durante il debug della rete. Come lo risolvete voi ragazzi? Bene, voglio solo una soluzione semplice, non voglio ottenere una sceneggiatura lunga.


2
Potete fornire un output di esempio o uno screenshot per integrare la domanda?
verde

1
Stai cercando informazioni più dettagliate di 5 packets transmitted, 0 received, 100% packet loss, time 4032ms(informazioni del genere vengono stampate al termine del ping, da solo o tramite Ctrl + C)? Stai cercando dati separati su ogni singolo ping?
Eliah Kagan,

1
Linux è fantastico e tutti noi qui lo adoriamo per molte ragioni ma ... ehi a volte Windows ha capito bene e Linux ha sbagliato. Sì, anche negli strumenti CLI di base. Sì, anche negli strumenti CLI di rete di base! Se non c'è modo semplice per ottenere un messaggio sullo schermo quando le cose vanno male, allora dobbiamo riconoscerlo come "una caratteristica che ci manca". Non vogliamo certo far finta che sia qualcosa di così complesso che non riusciamo a capire cosa stia chiedendo esattamente l'OP (specialmente quando si tratta di una funzione attivata di default in pochi milioni di caselle intorno a noi).
ndemou,

Avrei potuto giurare che questa funzione era presente nel precedente ping di Linux. È presente anche in MacOS (che si basa su unix). È al di là di me il motivo per cui non dovrebbe essere lì. Ho una linea che funziona in modo intermittente e per scoprire la lunghezza dei blackout ho bisogno di setacciare l'output cercando un salto, invece di avere le linee chiaramente distinte.
Silvio Levy,

Risposte:


26

La risposta giusta è: non esiste una cosa come " fallito ping perduto". (Le risposte errate come "Destinazione irraggiungibile" vengono sempre stampate, è diverso dal non rispondere affatto.)

L'utilità Ping stampa ogni risposta ricevuta, anche se ha deciso che questo ping specifico è stato perso. È del tutto possibile ricevere risposte fuori servizio.

Anche sul mio telefono Android, l'utilità ping ping supporta queste 2 opzioni:
-D stampa un timestamp prima di ogni messaggio
-O stampa un messaggio quando la risposta non viene ricevuta in tempo, ed è più o meno ciò che è stato chiesto .
Tuttavia, queste opzioni non sembrano essere supportate ovunque (ad es. Debian Wheezy le manca per quanto ne so, mentre Jessie le ha. busybox pingNon le supporta).

Ecco un esempio di output che sono riuscito a ottenere (le risposte ping non importanti sono state ignorate):

u0_a93@NX505J:/ $ ping -D -O 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
[1440545014.805478] 64 bytes from 8.8.8.8: icmp_seq=1 ttl=244 time=116 ms
~~~~~~~~~~
[1440545142.995443] 64 bytes from 8.8.8.8: icmp_seq=129 ttl=244 time=110 ms
[1440545144.885601] no answer yet for icmp_seq=130
[1440545145.455485] 64 bytes from 8.8.8.8: icmp_seq=131 ttl=244 time=568 ms
[1440545145.455780] 64 bytes from 8.8.8.8: icmp_seq=130 ttl=244 time=1569 ms
[1440545146.005850] 64 bytes from 8.8.8.8: icmp_seq=132 ttl=244 time=119 ms
~~~~~~~~~~
[1440545254.055962] 64 bytes from 8.8.8.8: icmp_seq=240 ttl=244 time=115 ms
^C
--- 8.8.8.8 ping statistics ---
240 packets transmitted, 240 received, 0% packet loss, time 239250ms
rtt min/avg/max/mdev = 109.062/138.757/1569.620/101.608 ms, pipe 2

Notare come il numero 130 viene inizialmente segnalato mancante, quindi ricevuto dopo il numero 131, e infine la perdita di pacchetti viene dichiarata pari a zero.


Nota aggiuntiva su Windows:

Su Windows, il ping sembra attendere più a lungo la risposta e quindi dichiararla mancante e ignorarla se arriva più tardi.

Per impostazione predefinita, l'intervallo è di 1 secondo e il timeout è di 4 secondi, quindi:
su RTT basso, i ping verranno inviati con intervalli di 1 secondo.
Su RTT> 4, i ping verranno inviati con intervalli di 4 secondi (o 5, non sono sicuro) e tutti verranno segnalati come non riusciti, come se il server non avesse risposto.


1
+1 per -Oopzione, è presente e funziona bene in Ubuntu fidato (e Linux Mint 17.2) dal pacchetto iputils-ping versione 3: 20121221-4ubuntu1.1
Xen2050,

11

Andando parzialmente dalla risposta di EvgEnZh, ma con la mia versione:

ping -O -q 8.8.8.8

Ciò gli consente di stampare un messaggio quando una risposta impiega troppo tempo o non torna più ( -O) e sopprime i messaggi per quando ritornano ( -q). Il risultato è che si ottiene output solo quando i pacchetti scompaiono. Questo può rendere molto più facile la ricerca di problemi intermittenti rendendola così non dover setacciare una pila di messaggi "ha funzionato" per i pochi punti in cui si è rotto.


Si noti che il trigger -O significa solo che la latenza è superiore al previsto. Ciò indica spesso un problema reale, ma non sempre. Quel registro che ho pubblicato nella mia risposta è stato acquisito su una connessione GPRS debole, e anche se in più di 2 minuti ho ricevuto una sola risposta fuori servizio, c'erano molte risposte che sono arrivate "in ritardo". La pessima connessione è stata travolta un paio di volte, ha riportato diversi ping mancanti in una riga e poi sono arrivati ​​tutti dopo pochi secondi. La connessione era ancora affidabile (forse GPRS gestiva la ritrasmissione internamente, non lo so), solo un dolore estremo da usare anche per l'accesso SSH.
EvgEnZh,

3

Può essere ping -f è adatto a te. Dal manuale del ping:

-f

Ping alluvione. Per ogni ECHO_REQUEST inviato viene stampato un punto ''. '', Mentre per sempre ECHO_REPLY ricevuto viene stampato un backspace. Ciò fornisce una rapida visualizzazione di quanti pacchetti vengono eliminati. Se non viene fornito l'intervallo, imposta l'intervallo su zero e genera i pacchetti più velocemente al loro ritorno o cento volte al secondo, a seconda di quale dei due sia maggiore. Solo il superutente può utilizzare questa opzione con intervallo zero.

Per 1 echo_request al secondo sembrerebbe ping -i 1 -f 8.8.8.8


Non sono sicuro che sia una nuova funzionalità o no, ho potuto vedere i ping falliti.
王子 1986,

Quale opzione hai usato per riportare i ping falliti? Quale messaggio ricevi per un ping non riuscito?
Daniel Yuste Aroca,

Mentre ho appena usato il ping, il messaggio è come questo $ ping 172.18.1.12 PING 172.18.1.12 (172.18.1.12) 56 (84) byte di dati. Da 172.18.1.224 icmp_seq = 1 Host di destinazione non raggiungibile Da 172.18.1.224 icmp_seq = 2 Host di destinazione non raggiungibile Da 172.18.1.224 icmp_seq = 3 Host di destinazione non raggiungibile
王子 1986

2
"Destination Host Unreachable" non
equivale a

ping -f non è la risposta, perché non lascia un record. Ciò che serve è un tipo di linea per un ping riuscito e un diverso per errore, così si può immediatamente dire (in una situazione in cui il servizio è intermittente) quanto spesso e quanto tempo sono i blackout.
Silvio Levy,

0

Anche con l'opzione -v, il ping non lo fa. Vedi questa domanda . Ma se questo è davvero importante (o divertente) per te, puoi scaricare il sorgente, modificare il codice per includere una chiamata printf adatta. Un buon posto per farlo sarebbe alla fine del metodo 'send_probe' (riga 619 il 12.10) ...

Per prima cosa ottieni la fonte

apt-get source iputils
cd iputils*

Apporta modifiche

gedit ping.c

Compilare e installare il pacchetto generato ...

apt-get install libsysfs-dev
dpkg-buildpackage

Vorrei fare questo (e votare questa risposta 10 volte) ma ci deve essere qualcosa che manca. Sto lavorando su sudo -s. Dopo aver modificato ping.c, se provo "make" ottengo "errore irreversibile: sys / capacity.h: nessun file di questo tipo". Se seguo le due righe successive nella risposta (apt-get install e dpkg -...) non ottengo errori ma non ho idea di dove sia posizionato l'eseguibile. Il vecchio eseguibile (/ bin / ping) è ancora lì - so che è vecchio dal timestamp e perché non si comporta in modo diverso.
Silvio Levy,

-1

Grazie per tutte le risposte Sembra che l'ultimo ping di Ubuntu possa mostrare che il ping è fallito.

Grazie ancora.


1
No (almeno fino al 2015-gennaio) "Destination Host Unreachable" non
equivale a

Perché questa è la risposta accettata? ping -O -q 8.8.8.8è la strada da percorrere.
theV0ID
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.