rxysg

一.说明

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,添加监控项

分类:

技术点:

相关文章: