eelse:response=json.loads(result.read())result.close()self.t

时间:2022-01-14 03:41:10

标签:zabbix挪用api接口批量添加主机

zabbix挪用api接口批量添加主机,,这里用的是python 2.7(需安置xlrd模块措置惩罚惩罚表格)。

(1)到官网下载xlrd模块:https://pypi.python.org/pypi/xlrd

(2)解压压缩包:tar xvf xlrd-1.0.0.tar.gz
(3)进入到解压的文件夹运行python setup.py install命令安置


1、整理一个excel表格(test.xlsx),格局如下:

eelse:response=json.loads(result.read())result.close()self.t


2、addhost.py脚本,添加主机名、显示名称、dns主机名、群组、模板字段(网上大部分是添加IP的,我这里是添加dns主机名的)。

#!/usr/local/kk-mail/app/engine/bin/python #coding:utf-8 import json  import urllib2  from urllib2 import URLError  import sys  import xlrd    class ZabbixTools:      def __init__(self):          self.url = ''          self.header = {"Content-Type":"application/json"}                                       def user_login(self):          data = json.dumps({                             "jsonrpc": "2.0",                             "method": "user.login",                             "params": {                                        "user": "Admin",                                        "password": "pass2018"                                        },                             "id": 0                             })                     request = urllib2.Request(self.url, data)          for key in self.header:              request.add_header(key, self.header[key])                 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()              self.authID = response['result']              return self.authID                 def host_get(self,hostName):          data = json.dumps({                             "jsonrpc":"2.0",                             "method":"host.get",                             "params":{                                       "output":["hostid","name"],                                       "filter":{"host":hostName}                                       },                             "auth":self.user_login(),                             "id":1,                             })                     request = urllib2.Request(self.url, data)          for key in self.header:              request.add_header(key, self.header[key])                                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 %s: " % hostName, len(response['result'])              lens=len(response['result'])              if lens > 0:                 return response['result'][0]['name']             else:                 return ""                              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[key])                          try:              result = urllib2.urlopen(request)          except URLError as e:              print "Error as ", e          else:              response = json.loads(result.read())              result.close()                lens=len(response['result'])              if lens > 0:                 self.hostgroupID = response['result'][0]['groupid']                 return response['result'][0]['groupid']             else:                 print "no GroupGet result"                 return ""                      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[key])                          try:              result = urllib2.urlopen(request)          except URLError as e:              print "Error as ", e          else:              response = json.loads(result.read())              result.close()              self.templateID = response['result'][0]['templateid']              return response['result'][0]['templateid']                         def host_create(self, hostName,visibleName,dnsName, hostgroupName, templateName1):          data = json.dumps({                             "jsonrpc":"2.0",                             "method":"host.create",                             "params":{                                       "host": hostName,                                       "name": visibleName,                                       "interfaces": [                                                          {                                                              "type": 1,                                                              "main": 1,                                                              "useip": 0,                                                              "ip": "",                                                              "dns": dnsName,                                                              "port": "10050"                                                          }                                                      ],                                      "groups": [                                                      {                                                          "groupid": self.hostgroup_get(hostgroupName)                                                      }                                                 ],                                      "templates": [                                                      {                                                          "templateid": self.template_get(templateName1)                                                                                                                }                                                   ],                                       },                             "auth": self.user_login(),                             "id":1                            })          request = urllib2.Request(self.url, data)          for key in self.header:              request.add_header(key, self.header[key])                          try:              result = urllib2.urlopen(request)          except URLError as e:              print "Error as ", e          else:              response = json.loads(result.read())              result.close()              print "host : %s is created!   id is  %s\n" % (dnsname, response['result']['hostids'][0])              self.hostid = response['result']['hostids']              return response['result']['hostids']                 def proxy_get(self, ProxyName):         data = json.dumps({                            "jsonrpc":"2.0",                            "method": "proxy.get",                            "params": {                                       "output": "extend",                                       "selectInterface": "extend",                                       "filter": {                                           "host": [ ProxyName, ]                                       }                                       },                            "auth":self.user_login(),                            "id":1,                            })           request = urllib2.Request(self.url, data)         for key in self.header:             request.add_header(key, self.header[key])           try:             result = urllib2.urlopen(request)         except URLError as e:             print "Error as ", e         else:             response = json.loads(result.read())             result.close()             self.templateID = response['result'][0]['proxyid']             return response['result'][0]['proxyid']                                                     if __name__ == "__main__":                 test = ZabbixTools()        workbook = xlrd.open_workbook('test.xlsx')     for row in xrange(workbook.sheets()[0].nrows):         hostname=workbook.sheets()[0].cell(row,0).value         visible=workbook.sheets()[0].cell(row,1).value         dnsname=workbook.sheets()[0].cell(row,2).value         hostgroup=workbook.sheets()[0].cell(row,3).value         hosttemp=workbook.sheets()[0].cell(row,4).value           hostgroup=hostgroup.strip()             hostnameGet=test.host_get(hostname)         if hostnameGet.strip()=='':             test.host_create(hostname,visible,dnsname,hostgroup,hosttemp)         else:             print "%s have exist! Cannot recreate !\n" % hostnameGet