通过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批量修改模板中触发器名称

相关内容

热门资讯

山西洪洞发生黄土崩塌,致5人死... 今天(25日)上午,记者从山西省洪洞县应急管理局获悉,洪洞县好义村黄土崩塌受困人员已全部找到。其中,...
瑞尔塔完成核聚变装置内直接能量... (来源:电力国际汇epintl) 六月早些时候,《聚变能源报道》曾刊发过瑞尔塔聚变公司(Realta...
中海油服获得发明专利授权:“一... 证券之星消息,根据天眼查APP数据显示中海油服(601808)新获得一项发明专利授权,专利名为“一种...
特朗普:301关税正式接棒,已... 据凤凰卫视报道,特朗普24日在白宫回应多项议题,强调最高法院推翻旧关税法源后,政府已改采新的法律依据...
夫妇雨天出门疑被电身亡,现场有... 7月24日,新京报记者多方核实获悉,陕西宝鸡永清村22日晚突发雷暴雨,一对中年夫妇雨天在村中道路疑被...
游戏掌机存储卡推荐:三星 T7... 当游戏加载条变短、4K视频秒录、掌机库一键随行——存储不该是妥协的理由。 三星T7,1TB大容量m...
宇树科技创始人兼CEO王兴兴登... 王兴兴登上时代封面。 当地时间7月23日,宇树科技创始人兼CEO王兴兴与其载人机甲产品GD01共同登...
今天,我们想的不仅是“上天”的... (一) 一箭5星!再传捷报! 7月24日,我国使用力箭一号遥十五运载火箭,成功将5颗卫星发射升空,卫...
携程被罚没51.79亿元 7月25日,市场监管总局依法对携程集团有限公司(以下简称携程)滥用市场支配地位实施垄断行为作出行政处...
多地停运停航停课,台风“红霞”... 中央气象台7月25日06时继续发布台风橙色预警:今年第12号台风“红霞”已于今天(25日)早晨由强热...