Python3调用zabbixAPI,snmp协议监控路由器简单模板

Posted kemengkai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3调用zabbixAPI,snmp协议监控路由器简单模板相关的知识,希望对你有一定的参考价值。

python version: python3.6

system version: Centos 8.2.2004

zabbix version: 5.0

 

 

import requests
import json
import uuid
import sys
import subprocess


auth = {
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": "user_name",
        "password":"user_password"
        },
        "id": 1,
        "auth":None,
    }

auth_id = requests.post("http://zabbix_url/api_jsonrpc.php", data=json.dumps(auth), headers={Content-Type: application/json-rpc})
auth_id = json.loads(auth_id.text)[result]

def post_action(data):
    req = requests.post("http://zabbix_url/api_jsonrpc.php", data=json.dumps(data), headers={Content-Type: application/json-rpc})
    dict_data = json.loads(req.text)
    # print(dict_data)
    return dict_data[result]

def zabbix_action(method, params):
    data = {}
    jsonrpc_ver = "2.0"
# 登录系统操作的key,就是上面的auth_id,最好是获取一次,删掉上面的登录信息填入这里。 auth ="XXXXXXX" data[method] = method data[params] = params data[auth] = auth data[jsonrpc] = jsonrpc_ver data[id] = str(uuid.uuid1()) return post_action(data) # 获取 template_id method1 = "template.get" params1 = { "output": "templateid", "filter": { "host": [ "Template Net Huawei VRP SNMPv2", #模板名称,用于获取模板ID ] } } template_id = zabbix_action(method1, params1) # 获取 groupid method2 = "hostgroup.get" params2 = { "output": "groupid", "filter": { "name": [ "Network_Devices" #组名,用于获取组ID ] } } groups_id = zabbix_action(method2,params2) # 根据主机IP获取主机ID def host_get_id(ip): method_host_get = "host.get" params_host_get = { "output" : ["hostid"], # 输出结果筛选,值显示hostid "filter" : {       # 条件搜索 "ip" : ip } } host_id = zabbix_action(method_host_get,params_host_get) return host_id[0]["hostid"] def host_create_snmp(ip, groups_id, template_id): snmp_port = 161 method_host_create = "host.create" params_host_create = { "host": ip, "interfaces": [ { "type": 2, "main": 1, "useip": 1, "ip": ip, "dns": "", "port": snmp_port, "details": { "version": 2, "community": "{$SNMP_COMMUNITY}", "bulk": 1 } } ], "proxy_hostid": 10322, "groups": groups_id, "templates": template_id, } result = zabbix_action(method_host_create, params_host_create) for i in range(1,255): host_ip = "172.16.1.{}".format(i) a = subprocess.run("snmpwalk -v2c -cknyy_rd {0} 1.3.6.1.2.1.1.5.0".format(host_ip),shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE) status = a.returncode if(status == 0): print("host_ip: {0},status:{1}".format(host_ip,status)) host_create_snmp(host_ip,groups_id,template_id)

 

以上是关于Python3调用zabbixAPI,snmp协议监控路由器简单模板的主要内容,如果未能解决你的问题,请参考以下文章

python3--zabbixapi 的使用

Zabbix 调用API 批量添加主机等

python3调用zabbix api接口对自动发现添加的主机修改主机名

SNMP

SNMP协议介绍

snmp中文含义是啥?它是最广泛的网络管理协议