如何通过Ruby脚本获取主机组下的主机

时间:2014-08-25 13:36:25

标签: ruby-on-rails ruby zabbix

我可以通过

获取主机组ID
puts zbx.hostgroups.get(:name => "Dev" )

给这个o / p

{"groupid"=>"13", "name"=>"Dev", "internal"=>"0", "flags"=>"0"}

但我希望获得此主机组下的所有节点。虽然我尝试过其他方式 得到这个主机组下的所有主机,但我没有在主机中找到groupid属性请参考下面的o / p

puts zbx.hosts.get(:host => "ip-10-10-111-11.ec2.internal")
  

{"维护" => []," hostid" =>" 10251"," proxy_hostid" =>& #34; 10109&#34 ;,   "主持人" =>" ip-10-10-111-11.ec2.internal","状态" =>" 0&#34 ;,   " disable_until" =>" 0","错误" =>"","可用" => ;" 1&#34 ;,   " errors_from" =>" 0"," lastaccess" =>" 0"," ipmi_authtype" => ;" 0&#34 ;,   " ipmi_privilege" =>" 2"," ipmi_username" =>""," ipmi_password" => ;"&#34 ;,   " ipmi_disable_until" =>" 0"," ipmi_available" =>" 0",   " snmp_disable_until" =>" 0"," snmp_available" =>" 0",   " maintenanceid" =>" 0"," maintenance_status" =>" 0",   " maintenance_type" =>" 0"," maintenance_from" =>" 0",   " ipmi_errors_from" =>" 0"," snmp_errors_from" =>" 0"," ipmi_error" => ;"&#34 ;,   " snmp_error" =>""," jmx_disable_until" =>" 0"," jmx_available" => ;" 0&#34 ;,   " jmx_errors_from" =>" 0"," jmx_error" =>"",   " name" =>" ip-10-10-111-11.ec2.internal"," flags" =>" 0&#34 ;," templateid" =>" 0"}

我没有找到主持人与他人之间的任何关系。 hostgroups。

2 个答案:

答案 0 :(得分:1)

我以下面的方式工作

host_grps =  zbx.query(
    :method => "host.get",
    :params => {
        "output" => "extend",
        "groupids" => [14]
    }
)
puts host_grps

它在hashmap列表中提供主机组。

答案 1 :(得分:0)

具有以下参数的方法host.get的简单JSON请求为我提供了属于指定组的所有主机的信息:

{ "output" : "extend", "groupids": [ "4", "12" ] }

有关详细信息,请参阅host.get API documentation