Как записать результаты ping в файл

Обновлено: 07.07.2024

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

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

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

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

Проверка сети и интернета с помощью команды ping

Предположим, что вам нужно проверить связь с компьютером в соседнем кабинете, для этого вам нужно знать его IP адрес (сетевой адрес) или имя этого компьютера. Пускай его IP адрес будет 192.168.88.1 и имя в сети SPA. Заходим в Пуск, выбираем пункт Выполнить. Так же можно и с помощью горячих клавиш. Для этого нажимаем Windows + R. В открывшемся окне пишем команду для вызова командной строки cmd.

выполнить cmd

выполнить и пишем cmd

После нажатия кнопки OK появится окно командной строки, в котором пишем команду ping 192.168.1.100 или ping spa, где после команды ping идет сетевой адрес или сетевое имя компьютера с которым проверяем связь.

пинг адреса в сети

пинг адреса в сети

При получение команды ping ваш компьютер начинает посылать пакеты удаленному компьютеру, удаленный компьютер приняв эти пакеты отсылает ответ о принятых пакетах. С скриншотов выше мы видим. Что ваш компьютер отослал четыре пакета по 32 байта и получил ответ с задержкой 1 мс.

Рабочий пример когда пропали пинги:

Внезапно стал тормозить outlook, письма не переключаются и не отправляются. Все висит. Открыл cmd вбил адрес outlook и написал команду

Вот результат что я увидел

Такая картина предстала на моем мониторе. Была потеря пакетов и 250+ мс задержки до сервера. Пришлось писать тикет в майкрософт и провайдеру.

Если вам интересно в чем была проблема, описание проблемы и ее решения в конце статьи.

В продолжении времени ответа хочу сказать, чем меньше время ответа от удаленного ресурса тем стабильнее связь.

нормальный пинг до сервера microsoft outlook

нормальный пинг до сервера microsoft outlook

А так же хочу добавить, что количество и размер отправляемых пакетов можно увеличить. Делается это для тестов стабильности канала. Введя в командной строке команду

Где -t означает количество отправляемых пакетов. (Если после -t не указать число то пакеты будут отправляться бесконечно).

И где -l 50 означает, что размер отправляемых пакетов будит 50 байт.

Для теста интернета и его стабильности я использую команду

ping яндекса

ping яндекса

Можно писать и ip адрес, но на мой взгляд так быстрее. Кстати кто-то пишет ip google 8.8.8.8, на мой взгляд это долго.

Ping через сеть Wi-Fi

Хочу заметить еще вот что, если у вас wi-fi 2,4 Ghz. Тогда могут быть небольшое задержки при пинге. Не пугайтесь это нормально. Например эту задержку видно на скриншоте.

1 Ответ от 87.250.250.242: число байт=32 время=47мс TTL=243
2 Ответ от 87.250.250.242: число байт=32 время=53мс TTL=243
3 Ответ от 87.250.250.242: число байт=32 время=71мс TTL=243
4 Ответ от 87.250.250.242: число байт=32 время=47мс TTL=243
5 Ответ от 87.250.250.242: число байт=32 время=47мс TTL=243

Почему к outlook были большие пинги и обрывы

Как я и обещал пишу о том как я исправил проблему с outlook 365. Написав провайдеру и отправив тикет в microsoft я принялся искать проблему внутри сети. Оказалось что у меня на роутере стояли dns не провайдера, а dns google. Поменяв днс на маршрутизаторе проблема ушла.

Через время мне ответили и провайдер и microsoft что они проблем не видят. Но я их немного опередил.

Как найти кольцо в сети при помощи команды ping

Вот кстати еще один хороший совет. Если у вас в внутри сети скачут пинги. Скорее всего у вас образовалось кольцо в сети. Чтоб его найти требуется

  1. Отключить все свитчи и хабы от роутера.
  2. Далее по одному подключать при этом запускать на одном из подключаемых компьютерах команду пинг на роутер.

Если пинги будут:

1 Ответ от 192.168.1.1: число байт=32 время=1мс TTL=64

2 Ответ от 192.168.1.1: число байт=32 время=1мс TTL=64

3 Ответ от 192.168.1.1: число байт=32 время=1мс TTL=64

4 Ответ от 192.168.1.1: число байт=32 время=1мс TTL=64

Все хорошо, но если вы увидите такую картину

1 Ответ от 192.168.1.1: число байт=32 время= 1мс TTL=64

2 Ответ от 192.168.1.1: число байт=32 время= 67мс TTL=64

3 Ответ от 192.168.1.1: число байт=32 время= 158мс TTL=64

4 Ответ от 192.168.1.1: число байт=32 время= 89мс TTL=64

5 Ответ от 192.168.1.1: число байт=32 время= 1мс TTL=64

6 Ответ от 192.168.1.1: число байт=32 время= 14мс TTL=64

Тогда на этом участке который вы только что подключили есть кольцо. Соответственно вам надо пойти и найти тот свитч или хаб. В который неопытный пользователь воткнул патч корд двумя концами.

Читайте также: