отображает недостающий счетчик icmp_seq | Команда ping

Я использовал способность Awk оценивать конструкцию имени файла, включая сегодняшнюю дату, при каждой оценке (для каждой строки, которая происходит из журнала) и в итоге получил:

tail -F mylatestlogfile.log | grep "ERROR" | awk '{print >> "/tmp/myerrors/errors." strftime("%Y-%m-%d") ".log"}'
3
09.12.2016, 16:37
5 ответов

До сих пор мне удалось написать приведенную ниже команду. Я могу запустить его в фоновом режиме и 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
0
27.01.2020, 21:37

Хитрость, которую вы можете использовать, состоит в том, чтобы создать цикл для запуска команды ping с параметром -c для отправки только 1 пакета:

 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 в случае сбоя.

0
27.01.2020, 21:37

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

это просто синтаксический анализ вывода 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
1
27.01.2020, 21:37

В Linux можно использовать:

fping -l google.com

Приведенная выше команда покажет статистику:

  • Среднее время выполнения каждого запроса.
  • Общий процент потерянных пакетов.

Пример вывода

google.com : [160], 84 bytes, 32.0 ms (39.1 avg, 0% loss)
google.com : [161], 84 bytes, 32.3 ms (39.1 avg, 0% loss)
google.com : [162], 84 bytes, 33.8 ms (39.1 avg, 0% loss)
google.com : [163], 84 bytes, 31.3 ms (39.0 avg, 0% loss)
google.com : [164], 84 bytes, 32.8 ms (39.0 avg, 0% loss)
google.com : [165], 84 bytes, 37.3 ms (39.0 avg, 0% loss)
google.com : [166], 84 bytes, 32.4 ms (38.9 avg, 0% loss)
google.com : [167], 84 bytes, 36.1 ms (38.9 avg, 0% loss)
google.com : [168], 84 bytes, 32.8 ms (38.9 avg, 0% loss)
google.com : [169], 84 bytes, 33.8 ms (38.8 avg, 0% loss)
google.com : [170], 84 bytes, 32.6 ms (38.8 avg, 0% loss)
google.com : [171], 84 bytes, 33.0 ms (38.8 avg, 0% loss)
google.com : [172], 84 bytes, 33.2 ms (38.7 avg, 0% loss)
^C
google.com : xmt/rcv/%loss = 173/173/0%, min/avg/max = 31.3/38.7/261

Советы:

  • ctrl + c, чтобы остановить его, и он покажет дополнительную строку статистики, включая:
    пакет отправлен / пакет получен / потерянный процент, мин / среднее / максимальное время истекшего времени.

Установить

Не установлен по умолчанию, можно установить через:

  • Убунту/Мятный двор
    sudo apt install fping
1
27.01.2020, 21:37

Используйте команду ping -O для упоминанияOожидающих пакетов. Пакет никогда не теряется, но если вы используете -O, незавершенный пакет приведет к строке вроде

Thu 04 Mar 2021 05:32:04 PM CET no answer yet for icmp_seq=232

Так что можно было

ping -O 192.168.56.11 | sed "s/.*no answer yet.*/failed/g"

чтобы получить желаемый результат

0
04.03.2021, 15:47

Теги

Похожие вопросы