|
14 / 14 / 3
Регистрация: 19.12.2009
Сообщений: 119
|
||||||||||||||||
Вывод bash скрипта в формате JSON03.09.2018, 19:39. Показов 6195. Ответов 10
Метки нет (Все метки)
Добрый день!
Обращаюсь за помощью к специалистам. Задача - сделать отображение состояния бекапов встроенными средствами виртуальной платформы Proxmox через Zabbix. Ничего готового не нашел. Зато нашел опубликованный пользователем skygge на форуме zabbix.com скрипт: Monitoring ProxMox VE virtual machines backup with Zabbix. Скрипт очень хороший, но очень малоинформативный. После исследования и раздумий принял решение попробовать своими силами и минимальным знанием скриптинга его переделать полноценный шаблон с автоматическим обнаружением виртуалок, и мониторинга состояния бекапа каждой. Если получится, то опубликую на share.zabbix.com. Проблема: как и ожидал, застрял на выводе результатов в формате JSON, которые нужно передавать в Zabbix. Вот мой discovery-script на текущем этапе:
Вывод сейчас такой:
Вот пример вывода, который Zabbix принимает на ура:
Самое интересное, что тут есть даже готовое решение: Output JSON from Bash script, и им можно было бы попробовать воспользоваться. Вот только прикрутить его у меня ума на текущем жизненном этапе не хватает. Заранее благодарен за помощь!
0
|
||||||||||||||||
| 03.09.2018, 19:39 | |
|
Ответы с готовыми решениями:
10
Вывод данных от сервера в формате JSON Рекурсивный спуск по каталогу и вывод в Json формате |
|
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
|
||||||
| 03.09.2018, 21:56 | ||||||
|
Так и непонятно чего именно Вы хотите. Вставить в начало
"data" с фигурными и квадратными скобками?Что касается запятых, то самое простое - bash parameter expansion:
1
|
||||||
|
14 / 14 / 3
Регистрация: 19.12.2009
Сообщений: 119
|
|||||||
| 03.09.2018, 22:16 [ТС] | |||||||
|
Хочу получить вывод скрипта в формате JSON. Вот так:
Это я руками в блокноте собрал, чтоб тестировать шаблон под заббикс. Получилось, заббикс принял. Необходимо, чтоб скрипт давал точно такой же вывод, а так же учитывал число данных. В одном случае блок "{#VM_NUMBER}":"106", "{#BACKUP_STATUS}":"106,0" может быть всего один, в другом (в зависимости от числа виртуалок на платформе) - много. У меня на тестовой - три. Вот и имею три блока данных. Спасибо!
0
|
|||||||
|
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
|
||||||
| 03.09.2018, 22:38 | ||||||
2
|
||||||
|
Диванный эксперт
|
||||||
| 03.09.2018, 22:39 | ||||||
Сообщение было отмечено MR_Andrew как решение
Решение
MR_Andrew, пара трюков с массивами для Bash
Не по теме: честно говоря, я бы взял другой язык для реализации подобной штуки(Python, например)
1
|
||||||
|
14 / 14 / 3
Регистрация: 19.12.2009
Сообщений: 119
|
||||||||||||
| 04.09.2018, 00:48 [ТС] | ||||||||||||
|
Marinero, премного Вам благодарен за ответ!
Но, к сожалению, в Вашем примере разобраться не смог, у меня слишком слабые знания. Понимаю, что Вы переписали мой (и то, это далеко не совсем мой) кусок кода в более оптимальную форму. Но полностью разобраться как это работает у меня не вышло. И не вижу еще одной проверки. У меня их две - на наличие задачи бекапа и на то, что эта задача активна. В оригинальном скрипте этой проверки не было, уже доделал сам. Так вот этой проверки не вижу. Но выглядит очень внушающе, спасибо! Max Dark, с большим трудом, но таки разобрался по Вашему примеру, хотя с массивами я ну очень поверхностно знаком. Снова таки, с трудом понимаю как это работает, но оно работает! Вот как теперь выглядит скрипт:
Спасибо!
Не по теме: Увы, не силен :( Мне очень повезло, что изначальный скрипт был на баше. Был бы он на том же Питоне, то я уже ничего бы не сделал. Разве что идти учить Питон :)
0
|
||||||||||||
|
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
|
||||
| 04.09.2018, 11:02 | ||||
|
1
|
||||
|
14 / 14 / 3
Регистрация: 19.12.2009
Сообщений: 119
|
||||||||||||||||||||||||||
| 04.09.2018, 22:02 [ТС] | ||||||||||||||||||||||||||
Конечно, с точки зрения профессионального программирования он очень не оптимальный и "дубовый". Задачу решаем "в лоб". Зато понятный новичку. Но в Вашем цикле, который выглядит очень внушительно, я уже разобраться не могу. И если понадобиться что-то поправить, то сам я уже не осилю. Тут я могу только догадываться как оно работает.На данный момент вариант, предложенный Max Dark, подошел. Конечно я еще буду очень тщательно тестировать, но на данном этапе все работает. И логика, пусть и совсем деревянная, тоже работает. Заббикс абсолютно корректно определяет настроенные виртуалки и создает "Элементы данных" только для настроенных. Не настроенные или отключенные пропускает. Вторая часть скрипта, которая уже будет непосредственно снимать данные, так же готова. Она такая же деревянная, но работает корректно. Если интересно, то вот: Кликните здесь для просмотра всего текста
Marinero, спасибо Вам за Ваши труды!
0
|
||||||||||||||||||||||||||
|
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
|
||||||
| 04.09.2018, 23:20 | ||||||
1
|
||||||
| 04.09.2018, 23:58 | ||||||
|
Не по теме:
0
|
||||||
|
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
|
|
| 05.09.2018, 09:32 | |
|
Max Dark,
Не по теме: ну что и требовалось доказать: вместо скрипта на 20 строк из которых значимых команд: grep, find и цикл получаем одороболо на почти 100 строк...
0
|
|
| 05.09.2018, 09:32 | |
|
Помогаю со студенческими работами здесь
11
Сделать вывод новостей, которые генерируются на сервере в формате JSON
Выполнение bash скрипта At команды из bash скрипта Перевод скрипта с Bash на Batch Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|