Ух ты, сколько нас тут много стало. Привет, кого не видел. Давай поговорим про утилиту jc. Про неё почти никто не знает, значит, самое время познакомиться.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
jc — это JSON-конвертер на основе встроенных парсеров.

Если коротко, то с помощью jc можно конвертировать выхлоп различных утилит в JSON-формат, а потом уже по-человечески извлекать данные.

Например, я хочу получить JSON от выхлопа iptables. Запускаю:

iptables -L | jc --iptables

И по итогу получаю годноту:

[{"chain":"INPUT","rules":[]},{"chain":"FORWARD","rules":[{"target":"DOCKER-USER","prot":"all","opt":null,"source":"anywhere","destination":"anywhere"},{"target":"DOCKER","prot":"all","opt":null,"source":"anywhere","destination":"anywhere"}..

Ну красота же. jc ограничена парсерами, но из коробки там прям на богатом всё — около 50. Crontab, CSV, ls, fstab, date, ping и т. п. Выбираешь парсер под нужную тебе задачу и получаешь готовый к работе массив данных.

Выдирать данные, само собой, будет удобно через jq: вкидываем его в пайп, пишем, какой ключ нужен, и получаем желаемое.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
jc также можно использовать как модуль в Python, так что тут не только у башников праздник.

Страница проекта на GitHub

Установка: apt/yum install jc

Лично я jc никогда не применял, но порой встречал в скриптах. Изучай, когда-нибудь обязательно пригодится.