Я загорелся идеей распарсить выдачу простой программы ping (Это я сделал ранее) и визуализировать колебания в графике. Для этого я нашёл программу
gnuplot.
Начнём
Пишем в консоле:
ping ya.ru
получаем примерно следующее:
64 bytes from ya.ru (87.250.250.242): icmp_seq=1 ttl=58 time=7.24 ms
64 bytes from ya.ru (87.250.250.242): icmp_seq=2 ttl=58 time=7.26 ms
64 bytes from ya.ru (87.250.250.242): icmp_seq=3 ttl=58 time=7.16 ms
лично меня интересует последнее значение которое следует за time=
, но мне не нужен формат измерения ms
, поэтому надо распарсить эту строку. Я нашёл 2 способа, через утилиту sed и через утилиту awk, уверен что есть куча других вариантов, но это самые простые для меня.
Парсим строку спомощью SED:
ping 192.168.1.1 | sed -u 's\^.*time=\\; s/ms.*//' > ping
Получаем файл "ping" (в домашмем каталоге) в котором написано что то вроде:
7.24
7.26
7.16
Похожий результат будет выдавать AWK:
ping 192.168.1.1 | awk -F "[\ ,=]" '{print $10; fflush()}' > pingawk
Приступим к рисованию гафиков
Как я уже сказал в начале, рисовать мы будем спомощью программы gnuplot.
Первым делом создаём простой и пустой текстовый файл в домашней дирректории, я назвал его "plotping", в нём прописываем параметры для gnuplot:
splot "pingawk" with lines
reread
после этого нам надо открыть 2 консоли (Позднее подумаю как запустить в одной). В одной запускаем:
ping 192.168.1.1 | awk -F "[\ ,=]" '{print $10; fflush()}' > pingawk
а во второй пишем:
gnuplot
откроется "диалог" с gnuplot где мы говорим ему брать настройки из ранее сделанного файла "plotping"
load "plotping"