现在越来越多的公司选择使用开源软件Zabbix来做服务器业务监控,其高逼格的用户管理是个亮点,所以可以通过调用它的接口将权限管理应用到很多地方,比如说堡垒机权限。以下是用python简单写了个小脚本,通过定义分组名便可以得到分组下的服务器信息。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
| #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.
flagsinteger(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.
|