# ============================================================
# TRASSIR -> ZABBIX
# STATE JSON TEST
# Version 3.3
# ============================================================
message("=== TRASSIR ZABBIX STATE 3.3 START ===")
# ------------------------------------------------------------
# Получаем список каналов
# ------------------------------------------------------------
try:
channels = objects_list("Channel")
except:
channels = []
message("CHANNEL COUNT: %s" % len(channels))
# ------------------------------------------------------------
# Начинаем JSON
# ------------------------------------------------------------
json = '{"channels":['
first = True
# ------------------------------------------------------------
# Обрабатываем каналы
# ------------------------------------------------------------
for item in channels:
try:
channel_name = str(item[0])
channel_guid = str(item[1])
# ----------------------------------------------------
# Получаем объект канала
# ----------------------------------------------------
channel = object(channel_guid)
if channel is None:
continue
# ----------------------------------------------------
# Получаем состояния
# ----------------------------------------------------
try:
signal = str(
channel.state("signal")
)
except:
signal = "ERROR"
try:
motion = str(
channel.state("motion")
)
except:
motion = "ERROR"
try:
recording = str(
channel.state("recording")
)
except:
recording = "ERROR"
try:
recording_device = str(
channel.state("recording_on_device")
)
except:
recording_device = "ERROR"
# ----------------------------------------------------
# Экранируем строки JSON
# ----------------------------------------------------
channel_name = channel_name.replace(
'\\',
'\\\\'
)
channel_name = channel_name.replace(
'"',
'\\"'
)
signal = signal.replace(
'\\',
'\\\\'
)
signal = signal.replace(
'"',
'\\"'
)
motion = motion.replace(
'\\',
'\\\\'
)
motion = motion.replace(
'"',
'\\"'
)
recording = recording.replace(
'\\',
'\\\\'
)
recording = recording.replace(
'"',
'\\"'
)
recording_device = recording_device.replace(
'\\',
'\\\\'
)
recording_device = recording_device.replace(
'"',
'\\"'
)
# ----------------------------------------------------
# Разделитель JSON
# ----------------------------------------------------
if first:
first = False
else:
json += ','
# ----------------------------------------------------
# Объект канала
# ----------------------------------------------------
json += (
'{"guid":"%s",'
'"name":"%s",'
'"signal":"%s",'
'"motion":"%s",'
'"recording":"%s",'
'"recording_device":"%s"}'
% (
channel_guid,
channel_name,
signal,
motion,
recording,
recording_device
)
)
except:
pass
# ------------------------------------------------------------
# Закрываем JSON
# ------------------------------------------------------------
json += ']}'
# ------------------------------------------------------------
# Вывод
# ------------------------------------------------------------
message(
"ZABBIX_STATE|%s"
% json
)
message("=== TRASSIR ZABBIX STATE 3.3 END ===")6 views