需求说明
编写一个python脚本,实现以下功能:
1.安装zabbix服务器
可以查询官方文档,如何安装部署zabbix服务器
2.获取zabbix api的url
设置前端后,你就可以使用远程HTTP请求来调用API。为此,需要向api_jsonrpc.php位于前端目录中的文件发送HTTP POST请求。如果你的Zabbix前端安装在http://192.168.1.10/zabbix,那么用HTTP请求来调用apiinfo.version方法就如下面这样:
POST192.168.1.10/zabbix/api_jsonrpc.phpHTTP/1.1
3.编写python程序,访问zabbix api,取得zabbix版本号
查询官方文档中获取Zabbix API 版本,官方文档的地址如下:
https://www.zabbix.com/documentation/3.4/zh/manual/api/reference/apiinfo/version
将官方文档中的内容进行复制,以便在脚本中直接使用
获取 API 版本
获取 Zabbix API 版本.
请求:
{
"jsonrpc": "2.0",
"method": "apiinfo.version",
"params": [],
"id": 1
}
响应:
{
"jsonrpc": "2.0",
"result": "2.4.0",
"id": 1
}
源代码
import requests
#python中的dict类型要转换json格式的数据需要用到json库
import json
#要访问的地址
url='http://192.168.1.10/api_jsonrpc.php'
#请求头部信息
headers={'Content-Type':'application/json-rpc'}
#data是从官方文档处获得的
data={
#jsonrpc协议的版本号,固定的
"jsonrpc":"2.0",
#在zabbix手册上查到的,查询zabbix版本
"method":"qpiinfo.verson",
#没有额外参数
"params":[],
#随便写个数字
"id":1
}
#使用requests发送请求,访问指定网站,向url发送data请求,r收到的返回响应为json格式
#将data转成json格式,zabbix要求提交的数据是json格式
r=requests.post(url,headers=headers,data=json.dumps(data))
#将json格式解码,zabbix返回的数据都是json格式
print(r.json())
代码结果测试
python3 zabbix_verson.py
{'jsonrpc': '2.0', 'error': {'code': -32602, 'message': 'Invalid params.', 'data': 'Incorrect API "qpiinfo".'}, 'id': 1}