Обложка канала

ServerAdmin.ru

12437 @srv_admin

Авторская информация о системном администрировании.

ServerAdmin.ru

4 года назад
Открыть в
​​Существует небольшая, но очень полезная утилита в Linux - jo. Она создаёт json вывод из поданных в неё данных. Покажу на условном примере: # jo name=vova name=sasha name=dima {"name":"vova","name":"sasha","name":"dima"} А вот более прикладной пример, который может существенно упростить некоторые проверки в мониторинге. Формируем массив из файлов в директории: # jo -p -a /backup/mysql/* [   "/backup/mysql/daily_mysql_2021-09-28_16h11m_Tuesday.sql.gz",   "/backup/mysql/daily_mysql_2021-09-29_16h15m_Wednesday.sql.gz",   "/backup/mysql/daily_mysql_2021-09-30_16h14m_Friday.sql.gz" ] Можно этот же массив предварительно отсортировать по дате с помощью ls: # ls -t | jo -p -a Свежие файлы будут отображаться первыми. Потом с помощью JSONPath $[0] можно получить имя самого свежего файла или самого старого: $[-1:]. Ещё практический пример. Массив процессов на хосте сразу с исключением дублей: # ps ax | awk '{print $5}' | jo -a -p | uniq [ .....   "/usr/bin/newrelic-infra-service",   "/usr/bin/newrelic-infra",   "/bin/sh",   "/usr/sbin/mysqld",   "/usr/sbin/sshd",   "/usr/sbin/rpc.mountd",   "/usr/sbin/rpc.idmapd", ...... ] В зависимости от ключей ps можно формировать нужный список с различными сортировками. Можно сразу же сформировать данные для LLD правил автообнаружения Zabbix: # jo -a {#DOMAIN}:ya.ru {#DOMAIN}:r0.ru ["{#DOMAIN}:ya.ru","{#DOMAIN}:r0.ru"] Не надо заморачиваться на баше с проставлением запятых и скобок. Утилита jo, наравне с jq, однозначно пригодится тем, кто много работает с JSON. К тому же живёт в базовых репах и без проблем устанавливается: # apt install jo # dnf install jo Исходники - https://github.com/jpmens/jo #bash #linux #zabbix #json