pyzabbix从主机名获取主机ID

时间:2018-08-02 13:51:55

标签: python zabbix

我刚刚开始使用pyzabbix。我想从名称中找到特定主机的ID。我读过的所有示例都执行以下操作,其中所需的host_id是过滤的(按主机)主机列表中的第一个元素[0]:

host_name = 'ci-dev'
host_id = zapi.host.get({"filter":{"host":host_name}})[0]["hostid"]

但是,当我使用host_id = zapi.host.get({"filter":{"host":host_name}})查看主机列表时,第一个元素不是我要查找的主机。无论我要过滤哪个主机,主机列表中的第一台主机始终是我们的Zabbix服务器。我要过滤的主机通常位于列表的下方。

我怎么了?

1 个答案:

答案 0 :(得分:0)

看看py-zabbix,语法相似,但我更喜欢。

一个小样本:

from zabbix.api import ZabbixAPI

zabbixServer    = 'http://localhost/zabbix/'
zabbixUser      = 'admin'
zabbixPass      = 'somepass'

zapi = ZabbixAPI(url=zabbixServer, user=zabbixUser, password=zabbixPass)

f  = {  'host' : 'yourhost'  }
hosts = zapi.host.get(filter=f, output=['hostids', 'host'] );

for host in hosts:
    print "ID: {} - Host: {}".format(host['hostid'], host['host'])