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