现在越来越多的公司选择使用开源软件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字段是定义 选中分组下边的主机的信息显示选项 具体包括下边的内容

PropertyTypeDescriptionhostidstring(readonly) ID of the host.

host

(required)stringTechnical name of the host.

availableinteger(readonly) Availability of Zabbix agent.

Possible values are:

0 - (default) unknown;

1 - available;

2 - unavailable.

disable_untiltimestamp(readonly) The next polling time of an unavailable Zabbix agent.

errorstring(readonly) Error text if Zabbix agent is unavailable.

errors_fromtimestamp(readonly) Time when Zabbix agent became unavailable.

flagsinteger(readonly) Origin of the host.

Possible values:

0 - a plain host;

4 - a discovered host.

ipmi_authtypeintegerIPMI authentication algorithm.

Possible values are:

-1 - (default) default;

0 - none;

1 - MD2;

2 - MD5

4 - straight;

5 - OEM;

6 - RMCP+.

ipmi_availableinteger(readonly) Availability of IPMI agent.

Possible values are:

0 - (default) unknown;

1 - available;

2 - unavailable.

ipmi_disable_untiltimestamp(readonly) The next polling time of an unavailable IPMI agent.

ipmi_errorstring(readonly) Error text if IPMI agent is unavailable.

ipmi_errors_fromtimestamp(readonly) Time when IPMI agent became unavailable.

ipmi_passwordstringIPMI password.

ipmi_privilegeintegerIPMI privilege level.

Possible values are:

1 - callback;

2 - (default) user;

3 - operator;

4 - admin;

5 - OEM.

ipmi_usernamestringIPMI username.

jmx_availableinteger(readonly) Availability of JMX agent.

Possible values are:

0 - (default) unknown;

1 - available;

2 - unavailable.

jmx_disable_untiltimestamp(readonly) The next polling time of an unavailable JMX agent.

jmx_errorstring(readonly) Error text if JMX agent is unavailable.

jmx_errors_fromtimestamp(readonly) Time when JMX agent became unavailable.

maintenance_fromtimestamp(readonly) Starting time of the effective maintenance.

maintenance_statusinteger(readonly) Effective maintenance status.

Possible values are:

0 - (default) no maintenance;

1 - maintenance in effect.

maintenance_typeinteger(readonly) Effective maintenance type.

Possible values are:

0 - (default) maintenance with data collection;

1 - maintenance without data collection.

maintenanceidstring(readonly) ID of the maintenance that is currently in effect on the host.

namestringVisible name of the host.

Default: host property value.

proxy_hostidstringID of the proxy that is used to monitor the host.

snmp_availableinteger(readonly) Availability of SNMP agent.

Possible values are:

0 - (default) unknown;

1 - available;

2 - unavailable.

snmp_disable_untiltimestamp(readonly) The next polling time of an unavailable SNMP agent.

snmp_errorstring(readonly) Error text if SNMP agent is unavailable.

snmp_errors_fromtimestamp(readonly) Time when SNMP agent became unavailable.

statusintegerStatus and function of the host.

Possible values are:

0 - (default) monitored host;

1 - unmonitored host.

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐