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

 

原文链接:http://www.cnblogs.com/gy99/p/11763141.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号