Python3通过Zabbix API获取数据
Zabbix API官方文档:https://www.zabbix.com/documentation/2.0/manual/appendix/api/api
#!/usr/bin/env python #For Python3 import urllib.request,urllib.parse,json,sys,importlib,argparse importlib.reload(sys) class zbxAPI(): def __init__(self): self.url = "http://10.10.2.2/zabbix/api_jsonrpc.php" self.headers = { 'User-Agent':'Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36', 'Content-Type':'application/json' } self.authdata = { "jsonrpc":"2.0", "method":"user.login", "params": { "user":"uname", "password":"password" }, "id":0 } #获取Token(auth data) def get_token(self): res = self.post_request(self.authdata) if 'result' in res: token = res['result'] return token else: return res['error']['data'] #发送参数到Zabbix服务器端请求数据 def post_request(self,postdata): postdata = bytes(json.dumps(postdata),'utf8') try: request = urllib.request.Request(self.url,postdata,headers=self.headers) reponse = urllib.request.urlopen(request).read() content = json.loads(reponse.decode('utf8')) return content except Exception as ErrorMsg: return ErrorMsg exit() #获取host列表 def list_hosts(self): host_list=[] get_data = { "jsonrpc":"2.0", "method":"host.get", "params":{ "output": "extend", }, "auth":self.get_token(), "id":1, } res = self.post_request(get_data) reslist = res['result'] for res in reslist: host_list.append(res['host']) return(host_list) #获取template列表 def list_templates(self): template_list=[] get_data = { "jsonrpc":"2.0", "method":"template.get", "params":{ "output": "extend", }, "auth":self.get_token(), "id":1, } res = self.post_request(get_data) reslist = res['result'] for res in reslist: print(res['templateid'] + ',' + res['host']) #测试认证是否成功,成功则打印auth data def Auth_test(self): print(self.get_token()) m=zbxAPI() # m.Auth_test() # print(m.list_hosts()) m.list_templates()
分类:
Zabbix
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2016-05-27 多进程、多线程处理文件对比
2016-05-27 大文件拆分
2014-05-27 读取xml格式文件
2013-05-27 Network Monitor
2013-05-27 循环while、foreach-object