现在越来越多的公司选择使用开源软件Zabbix来做服务器业务监控,其高逼格的用户管理是个亮点,所以可以通过调用它的接口将权限管理应用到很多地方,比如说堡垒机权限。以下是用python简单写了个小脚本,通过定义分组名便可以得到分组下的服务器信息。
#coding=utf-8
__author__ = 'Perling'
from urllib import urlencode
import urllib2
import json
def post(post_data):
api_url = 'http://monitor.zabbix.com/api_jsonrpc.php' #api url
req = urllib2.Request(api_url,json.dumps(post_data))
req.add_header("Content-Type","application/json")
resp = urllib2.urlopen(req)
re = json.loads(resp.read())
return re
def get_sessionid():
login_post_data = {"jsonrpc": "2.0",
"method": "user.login",
"params": {"user": "admin",
"password": "pass"
},
"id": "1",
}
re = post(login_post_data)
if re.has_key("result"):
return re["result"]
else:
return re
exit(1,"login_error")
def hostget():
hostget_post_json = {
"jsonrpc": "2.0",
"method": "hostgroup.get",
"params": {
"output": "extend",
"filter": {
"name": [
"Zabbix servers", ##要获取主机列表的分组名称
]
},
"selectHosts": ['hostid','host'],
},
"auth": get_sessionid(),
"id": 1
}
return post(hostget_post_json)
print hostget()
selectHosts字段是定义 选中分组下边的主机的信息显示选项 具体包括下边的内容
Property | Type | Description |
---|---|---|
hostid | string | (readonly) ID of the host. |
host (required) | string | Technical name of the host. |
available | integer | (readonly) Availability of Zabbix agent. Possible values are: 0 - (default) unknown; 1 - available; 2 - unavailable. |
disable_until | timestamp | (readonly) The next polling time of an unavailable Zabbix agent. |
error | string | (readonly) Error text if Zabbix agent is unavailable. |
errors_from | timestamp | (readonly) Time when Zabbix agent became unavailable. |
flags | integer | (readonly) Origin of the host. Possible values: 0 - a plain host; 4 - a discovered host. |
ipmi_authtype | integer | IPMI authentication algorithm. Possible values are: -1 - (default) default; 0 - none; 1 - MD2; 2 - MD5 4 - straight; 5 - OEM; 6 - RMCP+. |
ipmi_available | integer | (readonly) Availability of IPMI agent. Possible values are: 0 - (default) unknown; 1 - available; 2 - unavailable. |
ipmi_disable_until | timestamp | (readonly) The next polling time of an unavailable IPMI agent. |
ipmi_error | string | (readonly) Error text if IPMI agent is unavailable. |
ipmi_errors_from | timestamp | (readonly) Time when IPMI agent became unavailable. |
ipmi_password | string | IPMI password. |
ipmi_privilege | integer | IPMI privilege level. Possible values are: 1 - callback; 2 - (default) user; 3 - operator; 4 - admin; 5 - OEM. |
ipmi_username | string | IPMI username. |
jmx_available | integer | (readonly) Availability of JMX agent. Possible values are: 0 - (default) unknown; 1 - available; 2 - unavailable. |
jmx_disable_until | timestamp | (readonly) The next polling time of an unavailable JMX agent. |
jmx_error | string | (readonly) Error text if JMX agent is unavailable. |
jmx_errors_from | timestamp | (readonly) Time when JMX agent became unavailable. |
maintenance_from | timestamp | (readonly) Starting time of the effective maintenance. |
maintenance_status | integer | (readonly) Effective maintenance status. Possible values are: 0 - (default) no maintenance; 1 - maintenance in effect. |
maintenance_type | integer | (readonly) Effective maintenance type. Possible values are: 0 - (default) maintenance with data collection; 1 - maintenance without data collection. |
maintenanceid | string | (readonly) ID of the maintenance that is currently in effect on the host. |
name | string | Visible name of the host. Default: host property value. |
proxy_hostid | string | ID of the proxy that is used to monitor the host. |
snmp_available | integer | (readonly) Availability of SNMP agent. Possible values are: 0 - (default) unknown; 1 - available; 2 - unavailable. |
snmp_disable_until | timestamp | (readonly) The next polling time of an unavailable SNMP agent. |
snmp_error | string | (readonly) Error text if SNMP agent is unavailable. |
snmp_errors_from | timestamp | (readonly) Time when SNMP agent became unavailable. |
status | integer | Status and function of the host. Possible values are: 0 - (default) monitored host; 1 - unmonitored host. |
转载于:https://blog.51cto.com/zhaolin/1713188