Comment afficher l'échec du ping?

24

Lorsque nous utilisons le ping Windows, il affichera les pings ayant échoué. Ubuntu a-t-il une fonction similaire?

Le ping échoué est très utile lors du débogage du réseau. Comment vous résolvez ça? Eh bien, je veux seulement une solution simple, je ne veux pas obtenir un long script.

王子 1986
la source
2
Pouvez-vous fournir un exemple de sortie ou une capture d'écran pour compléter la question?
vert
1
Recherchez-vous ou des informations plus détaillées que 5 packets transmitted, 0 received, 100% packet loss, time 4032ms(des informations comme celles-ci sont imprimées lorsque le ping se termine, que ce soit par lui-même ou par Ctrl + C)? Recherchez-vous des données distinctes sur chaque ping individuel?
Eliah Kagan
1
Linux est génial et nous aimons tous ici pour de nombreuses raisons, mais ... parfois, Windows a bien fait les choses et Linux s'est trompé. Oui, même dans les outils CLI de base. Oui, même dans les outils CLI de réseau de base! S'il n'y a pas de moyen facile de faire apparaître un message à l'écran lorsque les choses tournent mal, nous devons le reconnaître comme "une fonctionnalité qui nous manque". Nous ne voulons certainement pas prétendre que c'est quelque chose de si complexe que nous ne pouvons pas comprendre exactement ce que l'OP demande (surtout quand c'est une fonctionnalité activée par défaut dans quelques millions de boîtes autour de nous).
ndemou
J'aurais juré que cette fonctionnalité était présente dans un ping Linux précédent. Il est également présent dans MacOS (qui est construit sur Unix). Ça me dépasse pourquoi ça ne devrait pas être là. J'ai une ligne qui fonctionne par intermittence et pour connaître la durée des pannes, j'ai besoin de parcourir la sortie à la recherche de saut, au lieu d'avoir des lignes clairement distinctes.
Silvio Levy

Réponses:

26

La bonne réponse est: il n'y a pas une telle chose comme « échoué ping perdu ». (Les réponses d'échec comme "Destination inaccessible" sont toujours imprimées, c'est différent de l'absence de réponse du tout.)

L'utilitaire Ping imprime chaque réponse reçue, même s'il a décidé plus tôt que ce ping spécifique était perdu. Il est tout à fait possible de recevoir des réponses dans le désordre.

Même sur mon téléphone Android, l'utilitaire stock ping prend en charge ces 2 options:
-D imprime un horodatage avant chaque message
-O imprime un message lorsque la réponse n'est pas reçue à temps, et c'est plus ou moins ce qui a été demandé .
Cependant, ces options ne semblent pas être prises en charge partout (par exemple, Debian Wheezy en manque pour autant que je sache, tandis que Jessie les a. busybox pingNe les prend pas en charge).

Voici un exemple de sortie que j'ai réussi à obtenir (réponses ping sans importance ignorées):

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

Notez comment le numéro 130 est d'abord signalé manquant, puis reçu après le numéro 131, et enfin la perte de paquets est signalée comme étant nulle.


Remarque supplémentaire sur Windows:

Sous Windows, le ping semble attendre la réponse plus longtemps, puis le déclarer manquant et l'ignorer s'il vient plus tard.

Par défaut, l'intervalle est de 1 seconde et le délai d'expiration est de 4 secondes
.
Sur RTT> 4, les pings seront envoyés avec des intervalles de 4 secondes (ou 5, pas sûr) et seront tous signalés comme ayant échoué, comme si le serveur ne répondait pas.

EvgEnZh
la source
1
+1 pour l' -Ooption, est présent et fonctionne bien dans Ubuntu fidèle (& Linux Mint 17.2) à partir du package iputils-ping version 3: 20121221-4ubuntu1.1
Xen2050
11

Partant partiellement de la réponse d'EvgEnZh, mais avec ma propre version:

ping -O -q 8.8.8.8

Cela lui permet d'imprimer un message lorsqu'une réponse prend trop de temps ou ne revient jamais ( -O) et supprime les messages lorsqu'ils reviennent ( -q). Le résultat est que vous n'obtenez la sortie que lorsque des paquets sont manquants. Cela peut faciliter la recherche de problèmes intermittents en le rendant ainsi inutile de passer au crible une pile de messages "ça a marché" pour les quelques endroits où il s'est cassé.

Azendale
la source
Notez que le déclenchement -O signifie uniquement que la latence est plus élevée que prévu. Cela indique souvent un vrai problème, mais pas toujours. Le journal que j'ai publié dans ma réponse a été acquis sur une connexion GPRS faible, et même si en plus de 2 minutes je n'ai détecté qu'une seule réponse en panne, de nombreuses réponses sont arrivées «tard». La connexion merdique a été submergée à quelques reprises, a signalé plusieurs pings manquants d'affilée, puis ils sont tous arrivés après quelques secondes. La connexion était toujours fiable (peut-être que GPRS a géré la retransmission en interne, je ne sais pas), juste une douleur extrême à utiliser même pour l'accès SSH.
EvgEnZh
3

Peut ping -f-être vous convient-il. Depuis le manuel ping:

-F

Ping d'inondation. Pour chaque ECHO_REQUEST envoyé, un point ''. '' Est imprimé, tandis que pour toujours ECHO_REPLY reçu, un retour arrière est imprimé. Cela fournit un affichage rapide du nombre de paquets qui sont abandonnés. Si l'intervalle n'est pas donné, il définit l'intervalle à zéro et sort les paquets aussi vite qu'ils reviennent ou cent fois par seconde, selon la valeur la plus élevée. Seul le super-utilisateur peut utiliser cette option avec un intervalle nul.

Pour 1 echo_request chaque seconde, cela ressemblerait ping -i 1 -f 8.8.8.8

Daniel Yuste Aroca
la source
Pas sûr que ce soit une nouvelle fonctionnalité ou non, j'ai pu voir les pings échoués.
1986子 1986
Quelle option avez-vous utilisée pour faire rapporter les pings ayant échoué? Quel message obtenez-vous pour un ping échoué?
Daniel Yuste Aroca
Alors que je viens d'utiliser ping, le message est comme ceci $ ping 172.18.1.12 PING 172.18.1.12 (172.18.1.12) 56 (84) octets de données. Depuis 172.18.1.224 icmp_seq = 1 hôte de destination inaccessible Depuis 172.18.1.224 icmp_seq = 2 hôte de destination inaccessible Depuis 172.18.1.224 icmp_seq = 3 hôte de destination inaccessible
1986
2
"Hôte de destination inaccessible" n'est pas la même chose qu'un délai d'expiration ping
ndemou
ping -f n'est pas la réponse, car il ne laisse pas d'enregistrement. Ce qui est nécessaire est un type de ligne pour un ping réussi et un autre pour l'échec, donc on peut immédiatement dire (dans une situation où le service est intermittent) à quelle fréquence et combien de temps les pannes sont.
Silvio Levy
0

Même avec l'option -v, le ping ne fait pas cela. Voir cette question . Mais si cela est vraiment important (ou amusant) pour vous, vous pouvez télécharger la source, modifier le code pour inclure un appel printf approprié. Un bon endroit pour cela serait à la fin de la méthode 'send_probe' (ligne 619 sur 12.10) ...

Vous obtenez d'abord la source

apt-get source iputils
cd iputils*

Faire des modifications

gedit ping.c

Créer et installer le package généré ...

apt-get install libsysfs-dev
dpkg-buildpackage
Rémi
la source
Je voudrais le faire (et voter 10 fois cette réponse) mais il doit manquer quelque chose. Je travaille sous sudo -s. Après avoir édité ping.c, si j'essaye "make" j'obtiens "erreur fatale: sys / capacity.h: aucun fichier de ce type". Si je suis les deux lignes suivantes dans la réponse (apt-get install et dpkg -...) je n'obtiens aucune erreur mais je n'ai aucune idée où l'exécutable est placé. L'ancien exécutable (/ bin / ping) est toujours là - je sais qu'il est ancien depuis l'horodatage et parce qu'il ne se comporte pas différemment.
Silvio Levy
-1

Merci pour toutes les réponses. Il semble que le dernier ping ubuntu puisse montrer que le ping a échoué.

Merci encore.

王子 1986
la source
1
Non, ce n'est pas le cas (jusqu'en 2015-janvier au moins) "Hôte de destination inaccessible" n'est pas la même chose qu'un délai d'expiration ping
ndemou
Pourquoi est-ce la réponse acceptée? ping -O -q 8.8.8.8est la voie à suivre.
theV0ID