码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-12-11 22:04:20      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:urllib   封装   pre   ids   token   head   utf-8   filter   rom   

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

标签:urllib   封装   pre   ids   token   head   utf-8   filter   rom   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!