отобразить отсутствующий счетчик icmp_seq | команда ping

Я ищу что-то, что показывает мне недостающий ICMP пакет при запуске команды ping или который может отображаться сбой в выходе. Пример ниже

Текущий выход, где нам не хватает счетчика icmp_seq.

 64 bytes from 192.168.56.11: icmp_seq=38 ttl=64 time=1.23 ms 64 bytes from 192.168.56.11: icmp_seq=52 ttl=64 time=0.831 ms 64 bytes from 192.168.56.11: icmp_seq=53 ttl=64 time=0.679 ms 64 bytes from 192.168.56.11: icmp_seq=54 ttl=64 time=0.679 ms 64 bytes from 192.168.56.11: icmp_seq=55 ttl=64 time=0.679 ms 64 bytes from 192.168.56.11: icmp_seq=56 ttl=64 time=0.679 ms 

Желаемый вывод, который будет считать icmp_seq, если отсутствует, а затем показать ошибку

 64 bytes from 192.168.56.11: icmp_seq=51 ttl=64 time=1.23 ms 64 bytes from 192.168.56.11: icmp_seq=52 ttl=64 time=0.831 ms 64 bytes from 192.168.56.11: icmp_seq=53 ttl=64 time=0.679 ms Failed Failed Failed Failed 64 bytes from 192.168.56.11: icmp_seq=58 ttl=64 time=0.679 ms 64 bytes from 192.168.56.11: icmp_seq=59 ttl=64 time=0.679 ms Failed Failed Failed 

Трюк, который вы могли бы использовать, – создать цикл для запуска команды ping с параметром -c для отправки только одного пакета:

  while : ; do ping -c1 -w1 192.168.56.11 | sed -n '/^64 bytes/p;/0 received/s/.*/Failed/p' done 

Параметр -w указывает время ожидания во втором, которое будет вызвано в случае недоступности хоста.

Команда sed выводит вывод ping в случае успеха и заменяет вывод ping с помощью Failed в случае отказа.

проверьте этот код

это просто разобрать вывод ping

 bash-4.1$ cat ping.awk #!/usr/bin/awk -f # # analyzes ping output on Linux and looks for missed returns # based on icmp_seq # # ping output is expected on stdin # BEGIN { num = 0 } $5 ~ /icmp_seq=/ { split($5, res, /=/); if (res[2] != num + 1) { print "missed between", num, "and", res[2] } num = res[2]; } bash-4.1$ cat ping_result.txt 64 bytes from 192.168.56.11: icmp_seq=38 ttl=64 time=1.23 ms 64 bytes from 192.168.56.11: icmp_seq=52 ttl=64 time=0.831 ms 64 bytes from 192.168.56.11: icmp_seq=53 ttl=64 time=0.679 ms bash-4.1$ awk -f ping.awk ping_result.txt missed between 0 and 38 missed between 38 and 52 

До сих пор мне удалось написать следующую команду. Я могу запустить его в фоновом режиме и tailf файл, который создается.

 [root@connect ~]# touch result.txt; while true; do ping -c 1 -w 2 192.168.56.11 || echo “`date` ping faild” >> result.txt; sleep 1; done