Zabbix. Task. Getting JSON with ONE variable
Перейти к навигации
Перейти к поиску
Description
Getting JSON with ONE variable ({#MIKROTIKIP}) for putting it to autodiscoverable Items and Triggers.
Configuring
Bash
Input data
We have array ${arrayHostIps[]}, which contains: "192.168.14.8 192.168.4.8 192.168.59.8"
It's necassary to convert it to JSON and to put it to zabbix for Items and Triggers creating.
Script
hostIps=$(for i in "${arrayHostIps[@]}"; do echo $i; done)
echo "$hostIps" | /usr/bin/awk 'BEGIN { printf "{\"data\": ["; } { if (NR != 1) printf ","; printf "{\"{#MIKROTIKIP}\": \"%s\"}", $1; } END { printf "]}"; }'
Output
...
{"data": [{"{#MIKROTIKIP}": "192.168.14.8"},{"{#MIKROTIKIP}": "192.168.4.8"},{"{#MIKROTIKIP}": "192.168.59.8"}]}
...
Python
Source JSON
[{'TYPE': 'cloud', 'CONFIG_ID': '2', 'REG_ID': '77300', 'SERVER': 'sip.novofon.com', 'LOGIN': '111111', 'PASSWORD': 'PassWord#1', 'AUTH_USER': '111111', 'OUTBOUND_PROXY': '', 'DETECT_LINE_NUMBER': 'N', 'LINE_DETECT_HEADER_ORDER': 'diversion;to', 'REGISTRATION_STATUS_CODE': '200', 'REGISTRATION_ERROR_MESSAGE': '', 'TITLE': 'zadarma-74732000274'}, {'TYPE': 'cloud', 'CONFIG_ID': '4', 'REG_ID': '77481', 'SERVER': 'vpbx400170172.mangosip.ru', 'LOGIN': '222222', 'PASSWORD': 'PassWord#2', 'AUTH_USER': '222222', 'OUTBOUND_PROXY': '', 'DETECT_LINE_NUMBER': 'N', 'LINE_DETECT_HEADER_ORDER': 'diversion;to', 'REGISTRATION_STATUS_CODE': '200', 'REGISTRATION_ERROR_MESSAGE': '', 'TITLE': 'mango-78005003377'},<...>]
Script
from bitrix24 import *
import json
# base bxApi request with url
bxApi = Bitrix24('https://alefstudio.bitrix24.ru/rest/140/3dn54rm3n2d08bu4/')
sipResponse = bxApi.callMethod('voximplant.sip.get')
# create raw empty list of ips
trunksNamesListRaw = []
# debug
#print(sipResponse)
# for each trunk full info
for a in range(len(sipResponse)):
trunkFull = (sipResponse[a])
# debug
#print(json.dumps(trunkFull['TITLE']).strip('"'))
trunkName = (json.dumps(trunkFull['TITLE']).strip('"'))
# put ip to raw list
trunksNamesListRaw.append(trunkName)
# null string list of ips
trunksNamesListJsonForZabbix = ""
# add str data to str json
trunksNamesListJsonForZabbix = (trunksNamesListJsonForZabbix + "{\"data\":[")
for x in range(len(trunksNamesListRaw)):
trunksNamesListJsonForZabbix = (trunksNamesListJsonForZabbix + "{\"{#TRUNKNAME}\"" + ":" + "\"" + trunksNamesListRaw[
x] + "\"" + "}")
if not x == len(trunksNamesListRaw) - 1:
trunksNamesListJsonForZabbix = (trunksNamesListJsonForZabbix + ",")
trunksNamesListJsonForZabbix = (trunksNamesListJsonForZabbix + "]}")
# json of ips to output
print(trunksNamesListJsonForZabbix)
Output
{"data":[{"{#TRUNKNAME}":"zadarma-74732000274"},{"{#TRUNKNAME}":"mango-78005003377"},<...>]}