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": "2.0", "method": "user.login", "params": { "user": "UserName", # zabbix管理員用戶名 "password": "PASSWORD" # 賬戶密碼 }, "auth": None, "id": 1 } json_data = json.dumps(data) req = requests.post(url,data=json_data,headers=headers) js_req = req.json() return js_req['result'] def hosts_get(token): #獲取所有主機信息 data = { "jsonrpc": "2.0", "method": "host.get", "params": { "output":["hostid","name"] }, "auth": token, "id": 1 } json_data = json.dumps(data) req = requests.post(url,data=json_data,headers=headers) js_req = req.json() return js_req['result'] def triggers_get(token,hostids):#通過指定的主機IDs獲取所有相關Trigger信息 data = { "jsonrpc": "2.0", "method": "trigger.get", "params": { "output": "extend", "hostids": hostids, "search": { "description": "Disk I/O" #修改此處更改觸發器匹配字符串,我這邊針對的是Disk I/O觸發器進行處理 } }, "auth": token, "id": 1 } json_data = json.dumps(data) req = requests.post(url,data=json_data,headers=headers) js_req = req.json() return js_req['result'] def trigger_update(token,triggerid): #根據triggerid修改trigger狀態:enable/disable data = { "jsonrpc": "2.0", "method": "trigger.update", "params": { "triggerid": triggerid, #此處只能爲單個id "status": 1 }, "auth": token, "id": 1 } json_data = json.dumps(data) req = requests.post(url,data=json_data,headers=headers) js_req = req.json() return js_req['result'] def pending(): path = 'C:/Users/38997/Desktop/hostlist.txt' #需要處理的主機列表 f = open(path,'r') return f.read() f.close() if __name__=='__main__': trigger_count = 0 trigger_ids = [] hostids = [] token = token_get() hostlist = hosts_get(token) print('讀取主機列表...') unhosts = pending() print("獲取主機ID...") for hostinfo in hostlist: if hostinfo['name'] in unhosts: hostids.append(hostinfo['hostid']) print("主機IDs:",hostids,"\n","獲取所有觸發器IDs...") triggerlist = triggers_get(token,hostids) for i in triggerlist: trigger_count += 1 trigger_ids.append(i['triggerid']) print(trigger_ids,'\n共',trigger_count,'條磁盤IO觸發器') select = input("開始處理 'y' or 'n' ?\n:") if select == 'y' or select == '': for triggerid in trigger_ids: print("開始禁用觸發器:",triggerid,"\n結果:",trigger_update(token,triggerid),"\n","-"*30) elif select == 'n': print("退出!") exit() else: print("請輸入:'y' or 'n'!") exit()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章