препятствуйте тому, чтобы вывод ping показал (truncated)
вместо time=##.# ms
Проблема нежелательного выходного формата происходит явно из-за теста, который я запускаю: определение порога потери пакетов размером пакета. Мой вопрос, как я могу просмотреть время (вместо "усеченного") так или иначе?
Желаемый выходной формат:
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
Нежелательный выходной формат:
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
В интересах полноты, также показывая случайную ошибку.
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
Я полагаю, что это не возможно.
, Учитывая мое чтение исходный код ping, если возвращенный размер данных меньше, чем отправленный размер данных, он будет всегда печатать это.
Мое предположение - то, что время просматривается как недопустимое или бесполезное из-за данных, являющихся усеченным.
Для разъяснения: условное выражение на строке, связанной выше,
if (cc < datalen+8) {
cc
, представляет число полученных байтов, и datalen
число, которому Вы предоставили -s
опция. Для этого это проверяет, является ли размер ответа меньше, чем отправленный размер (1373 в Вашем 2-м примере).
Другой вещью, которую я просто заметил, является синхронизация, вычисляется в очень следующем блоке после того, который обнаруживает усеченные данные. После строки, которая печатает (truncated)
текст, функциональные возвраты, таким образом, блок синхронизации никогда не работает.
Едва ли ответ, решая Вашу проблему, но объяснение того, почему это не может быть сделано.
ответ того, как не показать (truncated)
: сделайте удаленный хост для не усечения пакетов.