Появилась задача записать в файл результат работы команды 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
Оставить комментарий
Оставить комментарий могут только зарегистрированные пользователи