zabbix批量清理模板,添加新模板

  1 import requests
  2 import json
  3 import sys
  4 
  5 
  6 
  7 def get_token():
  8     data = {
  9         "jsonrpc": "2.0",
 10         "method": "user.login",
 11         "params": {
 12             "user": username,
 13             "password": password
 14         },
 15         "id": 0
 16     }
 17     r = requests.get(zaurl, headers=header, data=json.dumps(data))
 18     auth = json.loads(r.text)
 19     return auth["result"]
 20 
 21 
 22 #指定模板,获取主机信息
 23 def template_hostget(token):
 24     data = {
 25                 "jsonrpc": "2.0",
 26                 "method": "template.get",
 27                 "params": {
 28                     "output": ['host', 'templateid'],
 29                     "templateids": ['10001'],
 30                     "selectHosts": [   # 返回链接到模板的主机
 31                         "hostid",
 32                         "host",
 33                     ],
 34                 },
 35                 "auth": token,
 36                 "id": 1
 37             }
 38 
 39     request = requests.post(zaurl, data=json.dumps(data), headers=header)
 40     dict = json.loads(request.content)
 41     return (dict['result'][0]['hosts'])
 42 
 43 #获取连接的模板信息
 44 def hostget(token, hostid):
 45     data = {
 46                 "jsonrpc": "2.0",
 47                 "method": "host.get",
 48                 "params": {
 49                     "output": ["hostid","host"],
 50                     "selectParentTemplates": [
 51                         "templateid",
 52                         "name"
 53                     ],
 54                 "hostids": hostid
 55     },
 56                 "auth": token,
 57                 "id": 1
 58             }
 59 
 60     request = requests.post(zaurl, data=json.dumps(data), headers=header)
 61     dict = json.loads(request.content)
 62 #    print (dict)
 63     print (dict['result'][0]['hostid'],dict['result'][0]['host'],dict['result'][0]['parentTemplates'])
 64 
 65 
 66 def massupdate_templates_clear_hosts(token, hostid):
 67     data =  {
 68                 "jsonrpc": "2.0",
 69                 "method": "host.update",
 70                 "params": {
 71                     "hostid": hostid,
 72                     "templates_clear": ['10001']
 73                 },
 74                 "auth": token,
 75                 "id": 1
 76             }
 77     request = requests.post(zaurl, data=json.dumps(data), headers=header)
 78     print(request.content)
 79 
 80 def add_template(token, templateid, hostid):
 81     data = {
 82         "jsonrpc": "2.0",
 83         "method": "template.massadd",
 84         "params": {
 85             "templates": [
 86                 {
 87                     "templateid": templateid
 88                 },
 89             ],
 90             "hosts": [
 91                 {
 92                     "hostid": hostid
 93                 }
 94             ]
 95         },
 96         "auth": token,
 97         "id": 2
 98     }
 99     request = requests.post(zaurl, data=json.dumps(data), headers=header)
100     print(request.content)
101 
102 if __name__ == "__main__":
103 #修改输入参数
104     hostfile = "主机IP.txt"
105     zaurl = "http://x.x.x.x/zabbix/api_jsonrpc.php"
106     header = {"Content-Type": "application/json"}
107     username = "xx"
108     password = "xx"
109     token = get_token()
110 #获取主机和模板
111 #    hostinfo = template_hostget(token)
112 #    for i in hostinfo:
113 #       hostget(token, i['hostid'])
114 
115 #因监控机器数量太多,一次性全部修改会对zabbix数据库造成比较大的压力,所以分批修改
116     hostids = [获取到主机在zabbix里面的hostid]
117     for id in hostids:
118 #    hostget(token,'15097')
119         massupdate_templates_clear_hosts(token, id)
120         add_template(token, "10146", id)
121 
122  

 

posted @ 2019-10-30 10:03  三旌  阅读(971)  评论(0编辑  收藏  举报