Перейти к основному содержанию

Ping — выводить только долгий результат

code

Ping — это одна из самых базовых и полезных сетевых утилит в Linux (и других ОС). Её главная задача — проверить доступность сетевого узла и измерить параметры соединения. Это одна из базовых утилит траблшутинга сетевых проблем системного администратора.

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

Linux

Немного модифицируем ping в Linux, чтобы отображать только долгие ответы.

Например, ответ такой:

64 bytes from 10.224.60.6: icmp_seq=14 ttl=128 time=0.278 ms

Нам не интересно time=0.278 ms, хочется поймать более долгие ответы. Пишем однострочник:

ping 192.168.0.1 \
| grep -E "time=[1-9]{1}" --line-buffered \
| gawk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; fflush(); }'

Теперь увидим результат только если время ответа 1 и более мс. Или можно так:

ping 192.168.0.1 \
| grep -E "time=[0-9]{2}" --line-buffered \
| gawk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; fflush(); }'

Теперь увидим результат только если время ответа 10 и более мс. Принцип понятен.

ping

Windows

А в Windows? Немного GPT и получаем для русскоязычной версии:

for /l %i in (0,0,0) do @(for /f "tokens=1 delims=." %t in ("%time%") do @(ping -n 1 192.168.1.1 | findstr "время=[1-9][0-9]")) & timeout /t 1 /nobreak >nul

Результат немного не такой, потому что не выводится дата и время, но принцип тот же.

ping

Теги

 

Похожие материалы

Программирование: введение в профессию. Том 2: низкоуровневое программирование

Андрей Викторович Столяров
Во второй том книги "Программирование: введение в профессию" вошли её третья и четвёртая части.

Теги