代码之家  ›  专栏  ›  技术社区  ›  hugo

pyzabbix从主机名获取主机ID

  •  0
  • hugo  · 技术社区  · 7 年前

    我刚刚开始使用Pyzabix。我想从它的名字中找到一个特定的主机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 回复  |  直到 7 年前
        1
  •  1
  •   Simone Zabberoni    7 年前

    看看 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'])