Як показати невдалий пінг?


24

Коли ми використовуємо Windows ping, він відображатиме помилки pings. Чи має Ubuntu подібну функцію?

Невдалий пінг є досить корисним при налагодженні мережі. Як ви, хлопці, вирішите це? Ну, я хочу лише просте рішення, я не хочу отримувати довгий сценарій.


2
Чи можете ви надати зразок виводу або скріншот для доповнення питання?
зелений

1
Ви шукаєте або більш детальну інформацію, ніж 5 packets transmitted, 0 received, 100% packet loss, time 4032ms(така інформація, яка друкується, коли ping припиняється, самостійно чи Ctrl + C)? Ви шукаєте окремі дані про кожен окремий пінг?
Елія Каган

1
Linux є приголомшливим, і всі ми тут любимо його з багатьох причин, але ... ей, інколи Windows це правильно зробила, а Linux помилився. Так, навіть у основних інструментах CLI. Так, навіть у основних мережевих інструментах CLI! Якщо немає простого способу отримати повідомлення на екрані, коли справи йдуть не так, ми повинні визнати це "функцією, якої нам не вистачає". Ми, звичайно, не хочемо робити вигляд, що це щось настільки складне, що ми не можемо зрозуміти, що саме запитує ОП (особливо коли це функція, за замовчуванням увімкнена в кількох мільйонах коробок навколо нас).
ndemou

Я міг би присягнути, що ця функція була присутня в попередньому Linux ping. Він присутній і в MacOS (який побудований на версії unix). Це поза мною, чому його там не повинно бути. У мене є лінія, яка працює з перервами, і щоб дізнатися довжину затемнень, які мені потрібно просіяти через вихід, шукаючи стрибок, замість того, щоб лінії були чітко вираженими.
Сільвіо Леві

Відповіді:


26

Правильна відповідь: немає такого поняття, як " невдалий втрачений пінг". (Відповіді на відмову, такі як "Місце недоступного", завжди друкуються, воно зовсім не відрізняється від відповіді.)

Утиліта Ping роздруковує кожну отриману відповідь, навіть якщо вона любить вирішити, що ця конкретна пінг втрачена Відповіді цілком можливо отримувати поза замовленням.

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

Ось приклад результату, який мені вдалося отримати (неважливі відповіді ping пропущено):

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

Зверніть увагу, як спочатку повідомляється про відсутність №130, потім після # 131, і, нарешті, втрата пакету повідомляється про нуль.


Додаткова примітка про Windows:

У Windows, здається, ping довше чекає відповіді, а потім оголошує її відсутньою та ігнорує, якщо вона з’явиться пізніше.

За замовчуванням інтервал становить 1 секунду, а час очікування - 4 секунди, так що:
На низькій RTT, пінгви надсилатимуться з інтервалом 1 секунди.
На RTT> 4 пінги будуть надіслані з інтервалом 4 секунди (або 5, не впевнений), і всі вони будуть повідомлені як невдалі, як якщо б сервер не відповів.


1
+1 для -Oопції, присутній і добре працює в Ubuntu trusty (& Linux Mint 17.2) з пакета iputils-ping, версія 3: 20121221-4ubuntu1.1
Xen2050

11

Частково відмовлюсь від відповіді EvgEnZh, але з моєю власною версією:

ping -O -q 8.8.8.8

Це змушує друкувати повідомлення, коли відповідь триває занадто довго або ніколи не повертається ( -O) і пригнічує повідомлення, коли вони повертаються ( -q). Результат полягає в тому, що ви отримуєте вихід лише тоді, коли пакети відсутні. Це може значно полегшити пошук переривчастих проблем, тому вам не доведеться просіювати купу повідомлень "це спрацювало" за кілька місць, які вони зламали.


Зауважте, що -O запуск означає лише, що затримка перевищує очікувану. Це часто вказує на справжню проблему, але не завжди. Цей журнал, який я розмістив у своїй відповіді, був отриманий на слабкому з’єднанні GPRS, і хоча за 2 хвилини я потрапив лише на одну відповідь поза замовленням, було багато відповідей, які надійшли "пізно". Шоке з’єднання переповнилося кілька разів, повідомили про відсутність підряд декількох пінгерів, а потім вони через кілька секунд увійшли. З'єднання все ще було надійним (можливо, GPRS обробляла ретрансляцію всередині, я не знаю), що дуже сильно боліло використовувати навіть для доступу до SSH.
EvgEnZh

3

Можливо, ping -fвам підходить. З інструкції до ping:

-f

Затоплення пінг. Для кожного надісланого ECHO_REQUEST періоду надруковано ''. '', А назавжди ECHO_REPLY отриманий зворотній простір друкується Це забезпечує швидке відображення кількості скинутих пакетів. Якщо інтервал не заданий, він встановлює інтервал до нуля і видає пакети так само швидко, як вони повертаються назад, або сто разів на секунду, залежно від того, що більше. Лише суперкористувач може використовувати цю опцію з нульовим інтервалом.

За 1 echo_request щосекунди це виглядатиме ping -i 1 -f 8.8.8.8


Не впевнений, що це нова функція чи ні, я міг бачити невдалі пінгви.
王子 1986 р.

Який варіант ви використали, щоб повідомити про невдалі пінгви? Яке повідомлення ви отримуєте за невдалий пінг?
Даніель Юсте Арока

Поки я щойно використовував ping, повідомлення виглядає так, як це $ ping 172.18.1.12 PING 172.18.1.12 (172.18.1.12) 56 (84) байт даних. Від 172.18.1.224 icmp_seq = 1 Хост призначення недоступний З 172.18.1.224 icmp_seq = 2 Хост призначення недоступний З 172.18.1.224 icmp_seq = 3 Хост призначення Недоступний
王子 1986

2
"Хост призначення недоступний" - це не те саме, що
очікується на

ping -f не є відповіддю, оскільки він не залишає запис. Для успішного пінгу потрібен один тип рядка, а інший - для відмови, тож можна негайно сказати (у ситуації, коли служба переривається), як часто та як довго триває відключення.
Сільвіо Леві

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

Я хотів би зробити це (і підтвердити цю відповідь 10 разів), але щось повинно бути відсутнім. Я працюю під судо. Після редагування ping.c, якщо я спробую "зробити" я отримую "фатальну помилку: sys / capability.h: такого файлу немає". Якщо я дотримуюсь наступних двох рядків у відповіді (apt-get install і dpkg -...), я не отримую помилок, але не маю уявлення, де розміщується виконуваний файл. Старий виконуваний файл (/ bin / ping) все ще є - я знаю, що він старий від часової позначки і тому що він не поводиться інакше.
Сільвіо Леві

-1

Дякую за всі відповіді. Здається, що останній пінг ubuntu може показати, що ping не вдався.

Знову дякую.


1
Ні, це не (до принаймні 2015-го січня) "Приймач призначення недоступний" - це не те саме, що
очікується

Чому це прийнята відповідь? ping -O -q 8.8.8.8це шлях.
theV0ID
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.