Zabbix. Task. Getting JSON with ONE variable: различия между версиями
Перейти к навигации
Перейти к поиску
Cless (обсуждение | вклад) |
Cless (обсуждение | вклад) |
||
| Строка 2: | Строка 2: | ||
[[Категория:Python]] | [[Категория:Python]] | ||
[[Категория:Bash]] | [[Категория:Bash]] | ||
= 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': <nowiki>''</nowiki>, 'DETECT_LINE_NUMBER': 'N', 'LINE_DETECT_HEADER_ORDER': 'diversion;to', 'REGISTRATION_STATUS_CODE': '200', 'REGISTRATION_ERROR_MESSAGE': <nowiki>''</nowiki>, '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': <nowiki>''</nowiki>, 'DETECT_LINE_NUMBER': 'N', 'LINE_DETECT_HEADER_ORDER': 'diversion;to', 'REGISTRATION_STATUS_CODE': '200', 'REGISTRATION_ERROR_MESSAGE': <nowiki>''</nowiki>, 'TITLE': 'mango-78005003377'},'''<...>'''] | |||
==== Script ==== | |||
<syntaxhighlight lang="python3"> | |||
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) | |||
</syntaxhighlight> | |||
==== Output ==== | |||
{"data":[{"{#TRUNKNAME}":"zadarma-74732000274"},{"{#TRUNKNAME}":"mango-78005003377"},'''<...>''']} | |||
Текущая версия на 16:56, 5 октября 2023
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"},<...>]}