Get the App
SLTechnology News&Howtos  ›  Servers  › 

Modify the trigger name in the template in batch through python encapsulation zabbix-api

Shulou Source: shulou.com Published: 2022-06-02 11:52:24 10月04日 Update

#-*-coding: utf-8-*-import json,reimport urllib.request, urllib.error Urllib.parseclass ZabbixAPI: # initialize 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 () # Log in to get token def UserLogin (self): data = {"jsonrpc": "2.0" "method": "user.login", "params": {"user": self.__user, "password": self.__password}, "id": 0,} return self.PostRequest (data) # push request 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 # get the specified template ID name 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"] # get all trigger ID from the specified template ID and return the trigger name 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) # Update trigger name 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) # get the original trigger name And replace a specific string for batch update trigger name def ReWriteTriggerName (self,Template_name): StringJson = self.GetAllTriggersIDFromTemplatesID (Template_name) # print (StringJson) # print (type (StringJson)) for i in range (len (StringJson)): ret = re.sub ('closed','is down'' StringJson [I] ["description"]) self.updateTriggerName (StringJson [I] ["triggerid"], ret) def main (): # instantiate zabbix class zapi=ZabbixAPI () # template Select hosts=zapi.ReWriteTriggerName ("Template OS Linux") if _ _ name__ ='_ _ main__': main ()

List of trigger names in the previous Templates-OS-linux template:

List after use:

Tags: Name template trigger update character string instance utf-8 push login selection encapsulation Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Huawei NVidia OPPO Reno Shulou Technology Shulou Tech Info