Существует небольшая, но очень полезная утилита в 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