zabbix api 获取所有主机名

Posted

技术标签:

【中文标题】zabbix api 获取所有主机名【英文标题】:zabbix api get all host names 【发布时间】:2015-05-07 16:22:45 【问题描述】:

我正在使用 Python 查询 Zabbix 服务器,以尝试获取主机 ID 和主机名列表。我正在测试以下内容:

zapi = ZabbixAPI(server=server, log_level=debuglevel)
zapi.login(username, password)

hosts = zapi.host.get("params":"output":"hostid", "name")
print hosts

上面的测试只打印出hostid。不检索主机名。

输出示例:

[u'hostid': u'10084', u'hostid': u'30000', u'hostid': u'30001', u'hostid': u'30002']

我做错了什么? :(

【问题讨论】:

【参考方案1】:

您的参数错误。必须是数组:

zapi = ZabbixAPI(server=server, log_level=debuglevel)
zapi.login(username, password)

hosts = zapi.host.get(output=["hostid", "name"])
print hosts
[u'hostid': u'10084', u'name': u'Zabbix server']

【讨论】:

谢谢,简!对于其他阅读者,我从 zabbix_api 切换到 pyzabbix 以使上述内容正常工作。【参考方案2】:

对于那些在 Ruby 中寻找 Express42/zabbixapi 版本的人:

#!/usr/bin/env ruby
require 'pp'
require 'zabbixapi'

hostname = 'hostname.domain.com'

zbx = ZabbixApi.connect(
  url: 'http://localhost/zabbix/api_jsonrpc.php',
  user: 'Admin',
  password: 'zabbix'
)
pp zbx.query(
  method: 'host.get',
  params: 
    output: %w[extend hostid name],
    filter: 
      name: hostname
    
  
)

删除 filter 对象以返回 Zabbix 数据库中的所有主机。

【讨论】:

【参考方案3】:

试试这个代码:

from zabbix_api import ZabbixAPI


server = ""   #address   
username = ""              #user   
password = ""     # pass  


zapi = ZabbixAPI(server = server)
zapi.login(username, password)

hostgroups = zapi.hostgroup.get("output": "extend", "sortfield": "name") # for groupid
hosts = zapi.host.get("groupids": "36", "output": ["hostid","name", "host"]) # for host and name

【讨论】:

以上是关于zabbix api 获取所有主机名的主要内容,如果未能解决你的问题,请参考以下文章

调用zabbx的api接口获取IP地址和主机名

zabbix的api统计zabbix监控的主机数量与主机名

python3调用zabbix api接口对自动发现添加的主机修改主机名

利用ZABBIX进行服务器自动巡检并导出报表

我如何使用zabbix api响应问题和主机名?

zabbix server端自动发现和zabbix agent端自动注册