一.说明
zabbix的api可以查看API中文手册,API的参数等等一直都是变化不大,5.0版本的zabbix用3.4的API也可以直接使用。
调用的时候用requests来往zabbix的api的url里传入json字符串,在正常使用前先传入账号密码用user.login参数来登陆zabbix,成功后会返回一个token的值(可以print来看看),后续的操作直接填入这个token的变量即可。
二.认证基本函数
#/use/bin/python3
import json, requests
#zabbix服务器的IP地址
zabbix_ip = "172.16.1.1"
#zabbix的用户名
zabbix_user = "Admin"
#zabbix的密码
zabbix_pass = "zabbix"
#zabbix api接口地址
url = "http://" + zabbix_ip + ":8000/api_jsonrpc.php"
#zabbix api定义的访问头部信息
post_header = {\'Content-Type\': \'application/json\'}
#调用zabbix api需要身份令牌auth
def get_auth():
post_data = {
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": zabbix_user,
"password": zabbix_pass
},
"id": "1"
}
ret = requests.post(url, data=json.dumps(post_data), headers=post_header)
zabbix_ret = json.loads(ret.text)
if \'result\' not in zabbix_ret:
print(\'login error\')
else:
return zabbix_ret.get(\'result\')
#传入zabbix上主机的ip地址,返回主机的id号
def get_hostid(host_ip):
values = {
"jsonrpc": "2.0",
"method": "host.get", #指定方法
"params": { #参数列表
"output": "extend", #返回默认信息,这里可以加别的参数指定返回
"filter": { #根据ip查询
"host": [host_ip]
}
},
"auth": auth, #token
"id": 2, #id号随意写数字
}
#用post提交json字段,然后解析成字典输出
zabbix_req = requests.post(url, data=json.dumps(values), headers=post_header)
zabbix_req = zabbix_req.json()
print(zabbix_req)
if __name__ == \'__main__\':
auth = get_auth() #先传入token字符串到这个变量,后续调用变量即可
get_hostid("172.16.1.2") #调用后续的比如查id,添加监控项