Python从ZabbixAPI获取信息及实现Zabbix-API监控的方法

  

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监控的方法