通过python封装zabbix-api批量修改模板中触发器名称

# -*- coding: utf-8 -*-
import json,re
import urllib.request, urllib.error, urllib.parse
class ZabbixAPI:
# 初始化
def __init__(self):
self.__url = ‘http://192.168.74.133/api_jsonrpc.php‘
self.__user = ‘admin‘
self.__password = ‘zabbix‘
self.__header = {"Content-Type": "application/json-rpc"}
self.__token_id = self.UserLogin()
# 登陆获取token
def UserLogin(self):
data = {
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": self.__user,
"password": self.__password
},
"id": 0,
}
return self.PostRequest(data)

# 推送请求
def PostRequest(self, data):
request = urllib.request.Request(self.__url,json.dumps(data).encode(‘utf-8‘),self.__header)
result = urllib.request.urlopen(request)
response = json.loads(result.read().decode(‘utf-8‘))
try:
return response[‘result‘]
except KeyError:
pass

# 获取指定模板ID名称
def GetTemplatesID(self,Template_name):
data = {
"jsonrpc":"2.0",
"method":"template.get",
"params":{
"output":"templateid",
"filter": {
"host": Template_name
}
},
"auth": self.__token_id,
"id": 0
}
Template_ID_List = self.PostRequest(data)
return Template_ID_List[0]["templateid"]

# 从指定模板ID获取所有触发器ID并返回触发器名称description
def GetAllTriggersIDFromTemplatesID(self,Template_name):
TemplatesID = self.GetTemplatesID(Template_name)
data = {
"jsonrpc": "2.0",
"method": "trigger.get",
"params": {
"templateids": TemplatesID,
"output": ["description"]
},
"auth": self.__token_id,
"id": 0
}
return self.PostRequest(data)

# 更新触发器名称
def updateTriggerName(self,TriggerID=None,description=None):
data = {
"jsonrpc": "2.0",
"method": "trigger.update",
"params": {
"triggerid": TriggerID,
"description": description
},
"auth": self.__token_id,
"id": 0
}
return self.PostRequest(data)

# 获取原触发名称,并且替换特定字符串进行批量更新触发器名称
def ReWriteTriggerName(self,Template_name):
StringJson = self.GetAllTriggersIDFromTemplatesID(Template_name)
# print(StringJson)
# print(type(StringJson))
for i in range(len(StringJson)):
ret = re.sub(‘已关闭‘, ‘is down‘,StringJson[i]["description"])
self.updateTriggerName(StringJson[i]["triggerid"],ret)

def main():
# 实例化zabbix类
zapi=ZabbixAPI()
# 模板选择
hosts=zapi.ReWriteTriggerName("Template OS Linux")

if __name__ == ‘__main__‘:
main()

之前Templates-OS-linux模板中触发名称列表:

用完之后的列表:

原文地址:https://blog.51cto.com/9237101/2457803

时间: 2024-11-11 20:25:59

通过python封装zabbix-api批量修改模板中触发器名称的相关文章

C++ template —— 模板中的名称(三)

第9章 模板中的名称------------------------------------------------------------------------------------------------------------C++(与C一样)是一种上下文相关语言:对于C++的一个构造,我们不能脱离它的上下文来理解它.模板也是一种构造,它必须处理多种上下文相关信息:(1)模板出现的上下文:(2)模板实例化的上下文:(3)用来实例化模板的模板实参的上下文. 9.1 名称的分类 主要的命名

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&q

用zabbix生成awstats图表以及通过Python调zabbix API自动化操作

awstats作为一款日志分析软件,功能不错,但是界面过于简单,也没有图表功能,这里我采取了一种变通的方法,将awstats的分析结果(pv.hits(文件数).bandwidth.visits(独立ip))添加到zabbix,并通过zabbix生成趋势图表. 在前两篇文章中,我们队awstats的使用及其工作方式进行了简明扼要的介绍:awstats对每个站点进行分析之后,会生成一个"awstats012016.txt"格式的"数据库"文件:awstats的展示页面

python利用zabbix API添加监控

首先说一下坑的地方就是python2和python3的模块改变问题,当然精通python的可以略过.这个在网上百度一下吧,第二个是导入xlsx文件的时候需要xlrd模块,而这个模块最好跟着我下面的方法走,那个python2 就可以用我下边的脚本了. 1.安装xlrd读取Excel文件 1.1. 下载setuptools-38.2.4.zip,上传至zabbix服务器解压安装,下载地址:https://pypi.python.org/packages/69/56/f0f52281b5175e3d9

Altium原理图中利用封装管理器批量修改元器件封装

批量修改封装,或者别人拿来原理图让我们画板时,发现封装全不对.如果原理图中同样封装的器件很多时,那么批量修改封装将大大减少你的工作量.下面将我批量修改封装的方法共享给大家. 在原理图界面,打开封装管理器:快捷键T-G,如图,在Design Item ID下选择需要修改的元器件ID,这个ID在设计原理图就确定了,不可以随便改变.如果全局修改本类别的元器件选择这个选项.也可以根据需求选择其他选项.如图,选中需要更改的PC814,并全选. 在图的右下角有Add添加按钮,添加封装,如图: 这时在窗口可以

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接口来进行展示. 经过思考之后,计划获取如下内容: 1.  获得认证密钥 2.  获取zabbix所有的主机组 3.  获取单个组下的所有主机 4.  获取某个主机下的所有监控项 5.  获取某个监控项的历史数据 6.  获取某个监控项的最新数据 计划最后展示框架如下内容(这只是值方面,其它的会再加): 主机组1 ----主机名1---监控项1----当前值 ---监控项2----当前值 ----主机名2----监控

(二)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

批量修改字段中不规则的部分

需求:mysql数据表中有img字段,其中包括下面三条数据,我想把图片名保留下来,前面的部分改成自己想要的部分,即下面三条数据,其实这个字段的数据远不止三条,这里只是个例子. http://s29.9956.cn/product/40/ac/40ace1babb133e1ea17f09932dd2e508.jpg http://s29.9956.cn/product/cf/f8/cff815dabb3555cf1df47388baa32b84.jpg http://s29.9956.cn/pro