Python调用Zabbix API接口批量修改(禁用/启用)触发器trigger

#!/bin/env python3
#coding:utf-8
import json
import os
import requests

url = "http://192.168.1.1/zabbix/api_jsonrpc.php" # 此处域名修改为相应的地址

headers = {
‘Content-Type‘: ‘application/json-rpc‘
}

def token_get(): #根据账号密码获取token
data = {
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "UserName", # zabbix管理员用户名
"password": "PASSWORD" # 账户密码
},
"auth": None,
"id": 1
}
json_data = json.dumps(data)
req = requests.post(url,data=json_data,headers=headers)
js_req = req.json()
return js_req[‘result‘]

def hosts_get(token): #获取所有主机信息
data = {
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output":["hostid","name"]
},
"auth": token,
"id": 1
}
json_data = json.dumps(data)
req = requests.post(url,data=json_data,headers=headers)
js_req = req.json()
return js_req[‘result‘]

def triggers_get(token,hostids):#通过指定的主机IDs获取所有相关Trigger信息
data = {
"jsonrpc": "2.0",
"method": "trigger.get",
"params": {
"output": "extend",
"hostids": hostids,
"search": {
"description": "Disk I/O" #修改此处更改触发器匹配字符串,我这边针对的是Disk I/O触发器进行处理
}
},
"auth": token,
"id": 1
}
json_data = json.dumps(data)
req = requests.post(url,data=json_data,headers=headers)
js_req = req.json()
return js_req[‘result‘]

def trigger_update(token,triggerid): #根据triggerid修改trigger状态:enable/disable
data = {
"jsonrpc": "2.0",
"method": "trigger.update",
"params": {
"triggerid": triggerid, #此处只能为单个id
"status": 1
},
"auth": token,
"id": 1
}
json_data = json.dumps(data)
req = requests.post(url,data=json_data,headers=headers)
js_req = req.json()
return js_req[‘result‘]

def pending():
path = ‘C:/Users/38997/Desktop/hostlist.txt‘ #需要处理的主机列表
f = open(path,‘r‘)
return f.read()
f.close()

if __name__==‘__main__‘:
trigger_count = 0
trigger_ids = []
hostids = []
token = token_get()
hostlist = hosts_get(token)
print(‘读取主机列表...‘)
unhosts = pending()
print("获取主机ID...")
for hostinfo in hostlist:
if hostinfo[‘name‘] in unhosts:
hostids.append(hostinfo[‘hostid‘])
print("主机IDs:",hostids,"\n","获取所有触发器IDs...")
triggerlist = triggers_get(token,hostids)
for i in triggerlist:
trigger_count += 1
trigger_ids.append(i[‘triggerid‘])
print(trigger_ids,‘\n共‘,trigger_count,‘条磁盘IO触发器‘)
select = input("开始处理 ‘y‘ or ‘n‘ ?\n:")
if select == ‘y‘ or select == ‘‘:
for triggerid in trigger_ids:
print("开始禁用触发器:",triggerid,"\n结果:",trigger_update(token,triggerid),"\n","-"*30)
elif select == ‘n‘:
print("退出!")
exit()
else:
print("请输入:‘y‘ or ‘n‘!")
exit()

原文地址:https://blog.51cto.com/9499607/2481726

时间: 2024-11-06 21:12:19

Python调用Zabbix API接口批量修改(禁用/启用)触发器trigger的相关文章

python调用zabbix api接口实时展示数据

近日公司准备自已做一个运维管理平台,其中的监控部分,打算调用zabbix api接口来进行展示. 经过思考之后,计划获取如下内容: 1.  获得认证密钥 2.  获取zabbix所有的主机组 3.  获取单个组下的所有主机 4.  获取某个主机下的所有监控项 5.  获取某个监控项的历史数据 6.  获取某个监控项的最新数据 计划最后展示框架如下内容(这只是值方面,其它的会再加): 主机组1 ----主机名1---监控项1----当前值 ---监控项2----当前值 ----主机名2----监控

python 调用zabbix api实现查询主机信息,输出所有主机ip

之前发现搜索出来的主机调用zabbix api信息都不是那么明确,后来通过zabbix官方文档,查到想要的api信息,随后写一篇自己这次项目中用到的api. #!/usr/bin/env python #coding:utf8 import requests import json headers = {'Content-Type': 'application/json-rpc'} server_ip = '10.37.149.109' url = 'http://%s/zabbix/api_j

(二)Python调用Zabbix api之从入门到放弃——登录并获取身份验证令牌

访问zabbix api的URL是: http://x.x.x.x/zabbix/api_jsonrpc.php x.x.x.x可能是你的IP或者域名 访问流程概览: 1.首先登录 2.认证成功后zabbix server返回一个token 3.带着这个token去访问各种数据,做各种操作 4.完毕! 一.用RESTClient进行登录 在json请求的正文中,具有以下属性: jsonrpc - API使用的JSON-RPC协议的版本; Zabbix API实现JSON-RPC版本2.0; me

调用zabbix API实现批量管理主机及个监控项

首先贴上zabbix官网和中文官网的地址: https://www.zabbix.com/documentation/3.4/manual/api/reference/item/object https://www.zabbix.com/documentation/3.4/zh/manual/api 任何时候任何难题在官网上几乎都能找到答案 首先,我们想用利用zabbix的restful api来访问zabbix,肯定是需要登陆认证的.在zabbix的后续操作中,必须要有一个TOKEN,这也是官

(一)Python调用Zabbix api之从入门到放弃——准备工作

需要准备: 1.有可以用的zabbix服务端 2.准备一个火狐浏览器插件--RESTClient,用于调试使用 3.你必须具备python知识,如不具备,请放弃.谢谢! 4.你最好再有一个方便使用的python IDE,我的是Pycharm 原文地址:http://blog.51cto.com/freshair/2132723

(三)Python调用Zabbix api之从入门到放弃——从本节开始放弃

因为忙着写项目.所以没有时间来回倒腾!因此开始讨厌写一些技术博客,所以从本节开始放弃,刚入门就要放弃了!可能我是一个不善于分享的人,也可能我是一个自私的人.不得不承认白羊座的人做事情确实是三分钟热度.昨天还想着好好的写一篇系列文章,除了当是给自己做一些总结之外,也可以帮助到有需要的朋友.不过,确实是三分钟热度了,今天是拔凉拔凉的. 好了,下面是获取IP,HOSTS,HOSTID,GROUPID,ITEMID的Python代码,随便贴点,希望起到抛砖引玉的效果.当然,也是不完整的. # -*- c

zabbix调用api接口批量添加主机

zabbix调用api接口批量添加主机,这里用的是python 2.7(需安装xlrd模块处理表格). (1)到官网下载xlrd模块:https://pypi.python.org/pypi/xlrd (2)解压压缩包:tar xvf xlrd-1.0.0.tar.gz(3)进入到解压的文件夹运行python setup.py install命令安装 1.整理一个excel表格(test.xlsx),格式如下: 2.addhost.py脚本,添加主机名.显示名称.dns主机名.群组.模板字段(网

使用Python调用Flickr API抓取图片数据

Flickr是雅虎旗下的图片分享网站,上面有全世界网友分享的大量精彩图片,被认为是专业的图片网站.其API也很友好,可以实现多种功能.这里我使用了Python调用其API获得了大量的照片数据. 首先需要先去Flickr注册成为其开发者,创建应用,获得API_KEY和API_SECRET,其API网址在:https://www.flickr.com/services/api/ Flickr提供了多种开发工具进行使用.这里我们使用Python开发工具.官方推荐的开发工具是Beej’s Python

Python调用微博API

上头叫通过微博ID获取用户发布过的历史微博内容,于是研究了下新浪微博提供的API 1 首先在微博开放中心下"创建应用"创建一个应用,应用信息那些随便填,填写完毕后,不需要提交审核,需要的只是那个app-key和app-secret 2 在"微博开放平台"的"管理中心"找到刚才创建的应用,点开这个应用,点开左边"应用信息"栏,会看见"App key"和"App Secret"的字样,这两个