Python编写从ZabbixAPI获取信息
此脚本用Python3.6执行是OK的。 # - * -编码:utf - 8 - * 进口json urllib进口。请求,urllib。错误,urllib.parse 类ZabbixAPI: def __init__(自我): 自我。__url=' http://192.168.56.102/zabbix/api_jsonrpc.php ' 自我。__user='管理' 自我。__password=' zabbix ' 自我。__header={“内容类型”:“application/json - rpc”} 自我。__token_id=self.UserLogin () #登陆获取令牌 def UserLogin(自我): data=https://www.yisu.com/zixun/{“jsonrpc”:“2.0”, “方法”:“user.login”, " params ": { “用户”:self.__user, “密码”:self.__password }, “id”: 0, } 返回self.PostRequest(数据) #推送请求 def PostRequest(自我、数据): 请求=urllib.request.Request (self.__url json.dumps(数据).encode (utf - 8), self.__header) 结果=urllib.request.urlopen(请求) 响应=json.loads (result.read () .decode (utf - 8)) 试一试: #打印响应(“结果”) 返回响应(“结果”) 除了KeyError: 提高KeyError #主机列的表 def HostGet(自我,hostid=None, hostip=None): data=https://www.yisu.com/zixun/{“jsonrpc”:“2.0”, “方法”:“host.get”, " params ": { “输出”:“扩展”, “selectGroups”:“扩展”, “selectParentTemplates”:“templateid”、“名称”, “selectInterfaces”:“interfaceid”、“知识产权”, “selectInventory”:“操作系统”, “selectItems”:“itemid”、“名称”, “selectGraphs”:“graphid”、“名称”, “selectApplications”:“applicationid”、“名称”, “selectTriggers”:“triggerid”、“名称”, “selectScreens”: (“screenid”、“名称”) }, “身份验证”:self.__token_id, “id”:1、 } 如果hostid: [" params "]={数据 “输出”:“扩展”, “hostids”: hostid, “sortfield”:“名字” } 返回self.PostRequest(数据) #主机列的表 def HostCreate(自我、主机名、hostip groupid=None, templateid=None): data=https://www.yisu.com/zixun/{“jsonrpc”:“2.0”, “方法”:“host.create”, " params ": { “主机”:主机名、 “接口”:[ { “类型”:1、 “主要”:1、 “useip”: 1、 “知识产权”:hostip, “dns”:“”, “端口”:“10050” } ), “组织”:( { “groupid”: groupid } ), “模板”:[ { “templateid”: templateid } ] }, “身份验证”:self.__token_id, “id”:1、 } 返回self.PostRequest(数据) #主机组列的表 def HostGroupGet(自我,hostid=None, itemid=None): data=https://www.yisu.com/zixun/{“jsonrpc”:“2.0”, “方法”:“hostgroup.get”, " params ": { “输出”:“扩展”, “hostids”: hostid, “itemid”: itemid, “sortfield”:“名字” }, “身份验证”:self.__token_id, “id”:1、 } 返回self.PostRequest(数据) #监控项列表 def ItemGet(自我,hostid=None, itemid=None): data=https://www.yisu.com/zixun/{“jsonrpc”:“2.0”, “方法”:“item.get”, " params ": { “输出”:“扩展”, “hostids”: hostid, “itemid”: itemid, “sortfield”:“名字” }, “身份验证”:self.__token_id, “id”:1、 } 返回self.PostRequest(数据) #模板列表 def TemplateGet(自我,hostid=None, templateid=None): data=https://www.yisu.com/zixun/{“jsonrpc”:“2.0”, “方法”:“template.get”, " params ": { “输出”:“扩展”, “hostids”: hostid, “templateids”: templateid, “sortfield”:“名字” }, “身份验证”:self.__token_id, “id”:1、 } 返回self.PostRequest(数据) #图像列表 def GraphGet(自我,hostid=None, graphid=None): data=https://www.yisu.com/zixun/{“jsonrpc”:“2.0”, “方法”:“graph.get”, " params ": { “输出”:“扩展”, “hostids”: hostid, “graphids”: graphid, “sortfield”:“名字” }, “身份验证”:self.__token_id, “id”:1、 } 返回self.PostRequest(数据) #历史数据 def历史(自我、itemid data_type): data=https://www.yisu.com/zixun/{“jsonrpc”:“2.0”, “方法”:“history.get”, " params ": { “输出”:“扩展”, “历史”:data_type, “itemid”: itemid, “sortfield”:“钟”, “排序方式”:“DESC”, “限制”:30 }, “身份验证”:self.__token_id, “id”:2 } 返回self.PostRequest(数据) #测试:python的经理。py壳;ZABBIX。ZabbixAPI进口*;main(),代码修改了要ctrl + Z退出重进 def main (): zapi=ZabbixAPI () 令牌=zapi.UserLogin () 打印(令牌) # 39378 ec03aa101c2b17d1d2bd6f4ef16 主机=zapi.HostGet () 打印(主机) #【{u 'host: u 'Zabbix服务器,u 'hostid”: u ' 10084, u 'interfaces: [{u 'interfaceid”: u ' 1, u 'ip: u ' 127.0.0.1}]}] if __name__==癬_main__”: main ()Python从ZabbixAPI获取信息及实现Zabbix-API监控的方法