Как показать сбой ping?

21

Когда мы используем windows ping, он покажет неудачные сообщения. Имеет ли Ubuntu аналогичную функцию?

Неудавшийся пинг весьма полезен при отладке сети. Как вы, ребята, решаете это? Ну, я просто хочу простое решение, я не хочу, чтобы получить длинный скрипт.

    
задан 王子1986 06.04.2013 в 09:29
источник

5 ответов

0

Спасибо за все ответы. Похоже, что последний Ubuntu ping может показать, что ping не удалось.

Еще раз спасибо.

    
ответ дан 王子1986 18.04.2013 в 06:22
источник
20

Правильный ответ: нет такой вещи, как « failed lost ping». (Ответы об отказе, такие как «Целевое назначение недоступно», всегда печатаются, он не отличается от ответа вообще.)

Утилита Ping печатает каждый полученный ответ, даже если он решил, что этот конкретный пинг был потерян. Вполне возможно получить ответы не по порядку.

Даже на моем телефоне Android утилита запаса ping поддерживает эти 2 варианта:
-D печатает метку времени перед каждым сообщением -O печатает сообщение когда ответ не получен вовремя, , и это больше или меньше того, что было задано .
Однако эти параметры, похоже, не поддерживаются повсюду (например, Debian Wheezy не хватает их, насколько я знаю, в то время как у Джесси есть их. busybox ping не поддерживает их).

Вот пример вывода, который мне удалось получить (несущественные ответы ping пропущены):

[email protected]:/ $ 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

Обратите внимание на то, что вначале указано сообщение № 130, а затем получено после # 131, и, наконец, потеря пакетов считается нулевой.

Дополнительная заметка о Windows:

В Windows ping, похоже, ждет ответа дольше, а затем объявит его отсутствующим и проигнорирует его, если он появится позже.

По умолчанию интервал составляет 1 секунду, а таймаут - 4 секунды, поэтому:
При низком RTT пины будут отправляться с интервалом в 1 секунду.
В RTT > 4 пинги будут отправляться с 4-секундными интервалами (или 5, не уверены), и все будут сообщены как сбойные, так же, как если бы сервер не ответил.

    
ответ дан EvgEnZh 26.08.2015 в 03:49
6

Отчасти от ответа от EvgEnZh, но с моей собственной версией:

ping -O -q 8.8.8.8

Это заставляет его печатать сообщение, когда ответ занимает слишком много времени или никогда не возвращается ( -O ) и подавляет сообщения, когда они возвращаются ( -q ). В результате вы получаете результат только при отсутствии пакетов. Это может облегчить поиск прерывистых проблем, сделав это, поэтому вам не нужно просеивать кучу сообщений «это сработало» для нескольких мест, которые он сломал.

    
ответ дан Azendale 18.10.2016 в 17:20
2

Возможно, ping -f подходит вам. Из руководства ping:

-f

Flood ping. For every ECHO_REQUEST sent a period ''.'' is printed, while for ever ECHO_REPLY received a backspace is printed. This provides a rapid display of how many packets are being dropped. If interval is not given, it sets interval to zero and outputs packets as fast as they come back or one hundred times per second, whichever is more. Only the super-user may use this option with zero interval.

За 1 echo_request каждую секунду он будет выглядеть как ping -i 1 -f 8.8.8.8

    
ответ дан Daniel Yuste Aroca 06.04.2013 в 11:46
0

Даже с опцией -v ping этого не делает. См. этот вопрос . Но если это действительно важно (или весело) для вас, вы можете загрузить источник, изменить код, чтобы включить подходящий вызов printf. Хорошее место для этого было бы в конце метода send_probe (строка 619 в 12.10) ...

Сначала вы получаете источник

apt-get source iputils
cd iputils*

Сделать изменения

gedit ping.c

Создайте и установите сгенерированный пакет ...

apt-get install libsysfs-dev
dpkg-buildpackage
    
ответ дан Rémi 17.04.2013 в 15:51