27 мая 2016

Забираем список хостов для Rancid из Zabbix

Простой скрипт на Python выполняющий выгрузку через Zabbix API (из нужной группы) списка хостов для Rancid.












Предварительно нужно установить PyZabbix
pip install pyzabbix

Сам скрипт:
#!/usr/bin/python
from zabbix_api import ZabbixAPI

zapi = ZabbixAPI(server="https://zabbix.local")
zapi.login("login", "password")

f = open('/var/lib/rancid/network/router.db', 'w')

rows = zapi.host.get({'output': ['hostids', 'name', 'status'], 'groupids': ['8']})

if (rows != 0) and (len(rows) != 0):
 for h in rows:
  hid = h['hostid']
  
  if h['status'] == '0':
   rstatus = "up"
  else: rstatus = "down" 
  
  ipadr = zapi.hostinterface.get({'output': ['ip'], 'hostids' : hid, 'filter':{'main':1}})
  line = (ipadr[0]['ip'] + ":cisco:" + rstatus + ':"' + h['name'] + '"').encode('utf-8')
  f.write (line + '\n')
f.close()

Дальше запускаем скрипт кроном:
* /6 * * *  rancid  python /home/zabbix/scripts/rancid-zb-api.py > /dev/null 2>&1