要求:利用zabbix api去获取指定模板下的监控项,然后获取自己需要的监控项,根据监控项获取触发器的表达式,修改触发器的出发时间为9:00-11:30,13:00-15:30
思路讲解:
首先利用zabbix api中的template.get方法获取指定模板的templateid,然后利用item.key方法指定参数为templateids,就可以获取到templateid下的itemid,itemkey,itemname等数据,然后根据自己需要筛选出自己需要的item以及相关的数据,后面再根据trigger.get方法,其中itemids参数就可以获取到triggerid以及expression(表达式),最后根据trigger.update方法,指定triggerids参数,就可以修改expression(表达式)。
详细代码:
#!/usr/bin/env python
#coding=utf-8
#Function:Get the trigger for the specified template and change the trigger time to 9:00-11:30 and 13:00-15:30
#导入模块,urllib2是一个模拟浏览器HTTP方法的模块
import json
import urllib2
import sys
import re
from urllib2 import Request, urlopen, URLError, HTTPError
#url and url header
ip="10.10.30.232"
zabbix_url="http://{0}/zabbix/api_jsonrpc.php".format(ip)
zabbix_header = {"Content-Type":"application/json"}
zabbix_user = "admin"
zabbix_pass = "zabbix"
auth_code = ""
match_item=['mktdt00 update', 'mktdt01 update', 'mktdt03 update', 'file.size', 'file.modify.time']
#auth user and password
def get_auth_id():
auth_data = json.dumps(
{
"jsonrpc":"2.0",
"method":"user.login",
"params":
{
"user":zabbix_user,
"password":zabbix_pass
},
"id":0
})
# create request object
request = urllib2.Request(zabbix_url,auth_data)
for key in zabbix_header:
request.add_header(key,zabbix_header[key])
#auth and get authid
try:
result = urllib2.urlopen(request)
except HTTPError, e:
print 'The server couldn\'t fulfill the request, Error code: ', e.code
except URLError, e:
print 'We failed to reach a server.Reason: ', e.reason
else:
response=json.loads(result.read())
result.close()
if 'result' in response:
auth_code=response['result&