понедельник, 30 мая 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