#!/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()
Python調用Zabbix API接口批量修改(禁用/啓用)觸發器trigger
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.