上山打老虎 发表于 2021-6-24 09:50:29

python 一键添加 zabbix 监控脚本

  由于时间关系没有在脚本里把创建主机组和模板的功能,只是单单实现了添加主机的功能
  zabbix_tools.py
#!/usr/bin/python #coding:utf-8import json import urllib2 from urllib2 import URLError import sysclass ZabbixTools:   def __init__(self):         self.url = 'http://lihuipeng.blog.51cto.com/zabbix/api_jsonrpc.php'         self.header = {"Content-Type":"application/json"}                              def user_login(self):         data = json.dumps({                            "jsonrpc": "2.0",                            "method": "user.login",                            "params": {                                       "user": "Admin",                                       "password": "lihuipeng"                                       },                            "id": 0                            })                  request = urllib2.Request(self.url, data)         for key in self.header:             request.add_header(key, self.header)            try:             result = urllib2.urlopen(request)         except URLError as e:             print "Auth Failed, please Check your name and password:", e.code         else:             response = json.loads(result.read())             result.close()             #print response['result']             self.authID = response['result']             return self.authID            def host_get(self):         data = json.dumps({                            "jsonrpc":"2.0",                            "method":"host.get",                            "params":{                                    "output":["hostid","name"],                                    "filter":{"host":""}                                    },                            "auth":self.user_login(),                            "id":1,                            })                  request = urllib2.Request(self.url, data)         for key in self.header:             request.add_header(key, self.header)                           try:             result = urllib2.urlopen(request)         except URLError as e:             if hasattr(e, 'reason'):               print 'We failed to reach a server.'               print 'Reason: ', e.reason             elif hasattr(e, 'code'):               print 'The server could not fulfill the request.'               print 'Error code: ', e.code         else:             response = json.loads(result.read())             result.close()             print "Number Of Hosts: ", len(response['result'])             for host in response['result']:               print "Host ID:",host['hostid'],"Host Name:",host['name']                      def hostgroup_get(self, hostgroupName):         data = json.dumps({                            "jsonrpc":"2.0",                            "method":"hostgroup.get",                            "params":{                                    "output": "extend",                                    "filter": {                                                 "name": [                                                          hostgroupName,                                                          ]                                                 }                                    },                            "auth":self.user_login(),                            "id":1,                            })                  request = urllib2.Request(self.url, data)         for key in self.header:             request.add_header(key, self.header)                     try:             result = urllib2.urlopen(request)         except URLError as e:             print "Error as ", e         else:             response = json.loads(result.read())             result.close()             print "hostgroup : %s ------ id : %s" % (response['result']['name'], response['result']['groupid'])             self.hostgroupID = response['result']['groupid']             return response['result']['groupid']                  def template_get(self, templateName):         data = json.dumps({                            "jsonrpc":"2.0",                            "method": "template.get",                            "params": {                                       "output": "extend",                                       "filter": {                                                "host": [                                                         templateName,                                                         ]                                                }                                       },                            "auth":self.user_login(),                            "id":1,                            })                  request = urllib2.Request(self.url, data)         for key in self.header:             request.add_header(key, self.header)                     try:             result = urllib2.urlopen(request)         except URLError as e:             print "Error as ", e         else:             response = json.loads(result.read())             result.close()             print "template : %s ------ id : %s" % (response['result']['name'], response['result']['templateid'])             self.templateID = response['result']['templateid']             return response['result']['templateid']                      def host_create(self, hostip, hostgroupName, templateName):         data = json.dumps({                            "jsonrpc":"2.0",                            "method":"host.create",                            "params":{                                    "host": hostip,                                    "interfaces": [                                                         {                                                             "type": 1,                                                             "main": 1,                                                             "useip": 1,                                                             "ip": hostip,                                                             "dns": "",                                                             "port": "10050"                                                         }                                                   ],                                     "groups": [                                                   {                                                         "groupid": self.hostgroup_get(hostgroupName)                                                   }                                                ],                                     "templates": [                                                   {                                                         "templateid": self.template_get(templateName)                                                   }                                                   ],                                    },                            "auth": self.user_login(),                            "id":1                           })         request = urllib2.Request(self.url, data)         for key in self.header:             request.add_header(key, self.header)                     try:             result = urllib2.urlopen(request)         except URLError as e:             print "Error as ", e         else:             response = json.loads(result.read())             result.close()             print "host : %s ------ id : %s" % (hostip, response['result']['hostids'])             self.hostid = response['result']['hostids']             return response['result']['hostids']                                          if __name__ == "__main__":   if len(sys.argv) != 4:         print "Usage: %s ip hostgroupName templateName" % sys.argv         sys.exit(1)            test = ZabbixTools()   test.host_create(sys.argv, sys.argv, sys.argv)                                                                                      user_login是帐号密码验证
  host_get    是列出监控机
  hostgroup_get是获取主机组的ID
  template_get   是获取模板的ID
  host_create    添加主机
  运行方式:(前提是test-group这个主机组和test-template这个模板必须存在)
  ./zabbix_tools.py192.168.3.100test-grouptest-template
  参考文章:
https://www.zabbix.com/documentation/2.0/manual/appendix/api
页: [1]
查看完整版本: python 一键添加 zabbix 监控脚本