Для тех, кто не хочет покидать консоль, любит её ascii-графику, появилась утилита для отрисовки графиков из pipe. Под катом анимация и примеры.
потребуется установить jq для разбора json
Многие консольные утилиты буферизируют stdout. Из-за этого последовательный pipe ломается. Некоторые утилиты поддерживают настройку буферизации: sed -u, grep --line-buffered. В другом случае можно использовать универсальный способ stdbuf -oL и unbuffer.
--color COLOR — цвет колонок, число из палитры Xterm
--symbol SYMBOL — символ для отображения колонок, поддерживает котиков
--scale {all,window} — настройка автоматического масштабирования минимума и максимума, all — учитывает все данные, window — только видимые
--direction {left,right} — направление
--min MIN --max MAX — фиксирует минимум и максимум, сочетается с автоматическим масштабированием
P.S.: Добро пожаловать на github проекта ^-^. Пишите в ПРы, или комменты, свои примеры. Самые интересные добавлю в readme!
Пинг
ping ya.ru | grep --line-buffered time | sed -u -e 's#.*time=\([^ ]*\).*#\1#' | pipeplot --min 0
Можно отслеживать коронавирус через covidAPI
while true; do curl -s https://coronavirus-19-api.herokuapp.com/all | jq '.deaths'; sleep 60; done | pipeplot --color 1 --direction left
потребуется установить jq для разбора json
Пятисотки через графит
while true; do curl -s 'http://graphite/render?target=my_app_rps_error&format=json&from=-5min&until=now' | jq -c '.[0].datapoints[-1]'; sleep 5; done | sed -u s/null/0/ | stdbuf -oL uniq | stdbuf -oL jq '.[0]' | pipeplot
Буферизация
Многие консольные утилиты буферизируют stdout. Из-за этого последовательный pipe ломается. Некоторые утилиты поддерживают настройку буферизации: sed -u, grep --line-buffered. В другом случае можно использовать универсальный способ stdbuf -oL и unbuffer.
Доступные опции
--color COLOR — цвет колонок, число из палитры Xterm
--symbol SYMBOL — символ для отображения колонок, поддерживает котиков
--scale {all,window} — настройка автоматического масштабирования минимума и максимума, all — учитывает все данные, window — только видимые
--direction {left,right} — направление
--min MIN --max MAX — фиксирует минимум и максимум, сочетается с автоматическим масштабированием
Установка
pip install pipeplot
P.S.: Добро пожаловать на github проекта ^-^. Пишите в ПРы, или комменты, свои примеры. Самые интересные добавлю в readme!
trapwalker
че-то не работает=)
MyGodIsHe Автор
можно подробней? какая ось? какая команда? какая ошибка?
trapwalker
Ошибок не наблюдается. Просто останавливается при направлении конвейером в вашу тулзу.
У меня убунту 18.04.
Команда любая, включая ваш пример с пингом.
В код загляну надосуге. Некогда пока.
MyGodIsHe Автор
Проверил. Во втором питоне работает, а в третьем выходит после первой отрисовки. Буду чинить. Спасибо за сообщение!
trapwalker
Даже мысли не возникло во втором что-то пробовать. Я его уже прикопал везде, где дотянулся.
MyGodIsHe Автор
Может стоит удалить поддержку второго питона и не парится больше?
trapwalker
Ну… У вас же не библиотека, а утилита. В убунте штатно третьего Пайтона ещё в 18.04 нет. Придется поддерживать. Вам:). Я-то пользователь, могу забить на 2й. Вы мантейнер, положено страдать.
MyGodIsHe Автор
Вторая и третья версия по разному обрабатывают отсутствие данных в пайпе. Второй питон генерит ошибку Resource temporarily unavailable, третий отдаёт пустую строку. При том если пайп закрывается, второй и третий отдаёт пустую строку.
MyGodIsHe Автор
Поправил. Теперь не должен падать. Но как выйти при поломке пайпа в py3 пока не придумал. Сейчас он висит и ждёт ввода.