通过python封装zabbix-api批量修改模板中触发器名称
admin
2023-02-24 04:20:07
0次
# -*- 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模板中触发名称列表:
通过python封装zabbix-api批量修改模板中触发器名称

用完之后的列表:
通过python封装zabbix-api批量修改模板中触发器名称

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...