Zabbix. Task. Getting JSON with ONE variable

Материал из Wiki
Версия от 16:56, 5 октября 2023; Cless (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску


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"},<...>]}