1 votes

empêcher la sortie ping d'afficher (tronquée) au lieu de time=

Empêcher l'affichage de la sortie ping (truncated) au lieu de time=##.# ms

Le problème du format de sortie indésirable est clairement dû au test que j'effectue : déterminer le seuil de perte de paquets par la taille des paquets. Ma question est la suivante : comment puis-je afficher le temps (au lieu de "tronqué") de toute façon ?

Format de sortie souhaité :

user@desktop:~$ ping -c 10 -s 1372 -v hostname.com
PING hostname.com (X.X.X.X) 1372(1400) bytes of data.
1380 bytes from hostname.com (X.X.X.X): icmp\_req=1 ttl=242 time=82.8 ms
1380 bytes from hostname.com (X.X.X.X): icmp\_req=2 ttl=242 time=82.7 ms

--- hostname.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 82.826/83.038/83.250/0.212 ms

Format de sortie non souhaité :

user@desktop:~$ ping -c 10 -s 1373 -v hostname.com
PING hostname.com (X.X.X.X) 1373(1401) bytes of data.
1376 bytes from hostname.com (X.X.X.X): icmp\_req=1 ttl=242 (truncated)
1376 bytes from hostname.com (X.X.X.X): icmp\_req=2 ttl=242 (truncated)

--- hostname.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 82.997/83.010/83.023/0.013 ms

Dans l'intérêt de l'exhaustivité, montrant également une erreur intermittente.

user@desktop:~$ ping -c 2 -s 1373 -v hostname.com
PING hostname.com (X.X.X.X) 1373(1401) bytes of data.
From hostname2.com (Y.Y.Y.Y) icmp\_seq=1 Frag needed and DF set (mtu = 1400)
1376 bytes from hostname.com (X.X.X.X): icmp\_req=2 ttl=242 (truncated)

--- hostname.com ping statistics ---
2 packets transmitted, 1 received, +1 errors, 50% packet loss, time 999ms
rtt min/avg/max/mdev = 82.937/82.937/82.937/0.000 ms

1voto

James Points 3829

Je crois que ce n'est pas possible.

Compte tenu de ma lecture de la code source du ping si la taille des données renvoyées est inférieure à celle des données envoyées, cela sera toujours imprimé.

Je pense que l'heure est considérée comme invalide ou inutile parce que les données sont tronquées.

Pour clarification : La conditionnelle sur la ligne liée ci-dessus est

if (cc < datalen+8) {

cc représente le nombre d'octets reçus et datalen est le numéro que vous avez fourni avec le -s option. Il s'agit donc de vérifier si la taille de la réponse est inférieure à la taille envoyée (1373 dans votre 2ème exemple).

Une autre chose que je viens de remarquer est que le timing est calculé dans le bloc suivant celui qui détecte les données tronquées. Après la ligne qui imprime le (truncated) la fonction revient, de sorte que le bloc de synchronisation ne s'exécute jamais.

Ce n'est pas vraiment une réponse qui résout votre problème, mais une explication de la raison pour laquelle cela ne peut pas être fait.
La réponse à la question de savoir comment ne pas montrer (truncated) est : faire en sorte que l'hôte distant ne tronque pas les paquets.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X