DeePark.ru

Недавние комментарии
Автор: Kolelan | Опубликовано: 23.04.2019

Появилась задача записать в файл результат работы команды ping с указанием времени.

Задача возникла в следующем контексте:
В компании стоит аудиошлюз и в какой-то момент времени менеджеры сообщают что возникают проблемы со связью. Клиент слышит менеджера, менеджер не слышит клиента. Поскольку вопрос срочный, пытаемся решить его с тех поддержкой. Но поскольку в момент общения с техподдержкой всё хорошо, и по оборудованию всё работало. Они просят сообщить, как быстро отвечал их сервер в момент появления проблемы. Вот мы и сделаем так, что-бы менеджер сказал время проблемы, мы посмотрели это время в логах и сообщили, проседал канал или нет.

while true; do TIME=`date +%T`;PING=`ping 213.221.45.121 -c 1 | grep "icmp_seq=1"`; echo "[$TIME] $PING" >>/home/prg/pingtime23.04.2019.log; tail -n 1 /home/prg/pingtime23.04.2019.log;sleep 1; done

Запустили и видим что команда выполняется в консоли.

А файл то создан? Проверим:

tail --lines=10 pingtime23.04.2019.log

Да, ping пишется со временем и в консоль и в файл!

А если у нас стоит Windows? Тогда команда для записи ping в файл со временем будет такой:

for /l %i in (0,0,1) do @cmd /c "echo.|set/p=%TIME:~0,8^%" >> c:\users\userpc\pinglog23.04.2019.log & ping -n 1 213.221.45.121 | findstr "Превышен Ответ" >> c:\users\userpc\pinglog23.04.2019.log & ping -n 2 localhost > nul

Кодировка созданного файла будет IBM866, так что блокнотом не посмотреть.

Второй случай с предысторией

На самом деле история та же. Два аудиошлюза IP телефонии и проблемы со связью. Необходимо исключить проблемы со скоростью доступа к серверу аудиошлюзов. Для этого ping со временем в лог файл таким образом (Операционная Ubuntu)

ping 213.221.45.121 | while read pong; do echo "$(date): $pong"; done > pingWithTime.log

Получаем что-то типа этого:

Вт авг 27 13:26:42 MSK 2019: PING 213.221.45.121 (213.221.45.121) 56(84) bytes of data.
Вт авг 27 13:26:42 MSK 2019: 64 bytes from 213.221.45.121: icmp_seq=1 ttl=60 time=3.40 ms
Вт авг 27 13:26:43 MSK 2019: 64 bytes from 213.221.45.121: icmp_seq=2 ttl=60 time=2.28 ms
Вт авг 27 13:26:44 MSK 2019: 64 bytes from 213.221.45.121: icmp_seq=3 ttl=60 time=2.51 ms
Вт авг 27 13:26:45 MSK 2019: 64 bytes from 213.221.45.121: icmp_seq=4 ttl=60 time=2.89 ms

Как результат имеем большой файл из которого нам в какой-то момент понадобится получить информацию. Как?

Например так:

grep -E '(Вт авг 27 14:23)' pingWithTime.log

Так мы получим все значения ping совершённые в 14:23 и сможем произвести анализ полученных данных.

Будет что-то типа этого:

Вт авг 27 14:23:00 MSK 2019: 64 bytes from 213.221.45.121: icmp_seq=3374 ttl=60 time=2.70 ms
Вт авг 27 14:23:01 MSK 2019: 64 bytes from 213.221.45.121: icmp_seq=3375 ttl=60 time=2.65 ms
Вт авг 27 14:23:02 MSK 2019: 64 bytes from 213.221.45.121: icmp_seq=3376 ttl=60 time=2.33 ms
Вт авг 27 14:23:03 MSK 2019: 64 bytes from 213.221.45.121: icmp_seq=3377 ttl=60 time=2.52 ms
Вт авг 27 14:23:04 MSK 2019: 64 bytes from 213.221.45.121: icmp_seq=3378 ttl=60 time=2.91 ms

Оставить комментарий

Оставить комментарий могут только зарегистрированные пользователи