Как записать результаты ping в файл
Появилась задача записать в файл результат работы команды 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
После нажатия кнопки OK появится окно командной строки, в котором пишем команду ping 192.168.1.100 или ping spa, где после команды ping идет сетевой адрес или сетевое имя компьютера с которым проверяем связь.
пинг адреса в сети
При получение команды ping ваш компьютер начинает посылать пакеты удаленному компьютеру, удаленный компьютер приняв эти пакеты отсылает ответ о принятых пакетах. С скриншотов выше мы видим. Что ваш компьютер отослал четыре пакета по 32 байта и получил ответ с задержкой 1 мс.
Рабочий пример когда пропали пинги:
Внезапно стал тормозить outlook, письма не переключаются и не отправляются. Все висит. Открыл cmd вбил адрес outlook и написал команду
Вот результат что я увидел
Такая картина предстала на моем мониторе. Была потеря пакетов и 250+ мс задержки до сервера. Пришлось писать тикет в майкрософт и провайдеру.
Если вам интересно в чем была проблема, описание проблемы и ее решения в конце статьи.
В продолжении времени ответа хочу сказать, чем меньше время ответа от удаленного ресурса тем стабильнее связь.
нормальный пинг до сервера microsoft outlook
А так же хочу добавить, что количество и размер отправляемых пакетов можно увеличить. Делается это для тестов стабильности канала. Введя в командной строке команду
Где -t означает количество отправляемых пакетов. (Если после -t не указать число то пакеты будут отправляться бесконечно).
И где -l 50 означает, что размер отправляемых пакетов будит 50 байт.
Для теста интернета и его стабильности я использую команду
Можно писать и 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 Ответ от 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
Тогда на этом участке который вы только что подключили есть кольцо. Соответственно вам надо пойти и найти тот свитч или хаб. В который неопытный пользователь воткнул патч корд двумя концами.
Читайте также: