zoukankan      html  css  js  c++  java
  • python 调用zabbix api接口实现主机的增删改查

    python程序调用zabbix系统的api接口实现对zabbix_server端主机的增删改查,使用相关功能时候,需要打开脚本中的相关函数。

    函数说明:

    zabbixtools()  调用zabbix api

    template_get()  获取zabbix  server端已经配置的模板信息

    hostgroup_get()  获取已经添加的主机组列表信息

    host_get()   单个主机信息

    host_del()  删除主机

    host_create()  新建主机

    get_grouphost()  获取某个组下面所有的主机信息

      1 #!/usr/bin/env python
      2 # -*- coding: utf-8 -*-
      3 import json
      4 import urllib2
      5 import sys
      6 class zabbixtools:
      7     def __init__(self):
      8         self.url = "http://x.x.x.x/zabbix/api_jsonrpc.php"
      9         self.header = {"Content-Type": "application/json"}
     10         self.authID = self.user_login()
     11     def user_login(self):
     12         data = json.dumps(
     13                 {
     14                     "jsonrpc": "2.0",
     15                     "method": "user.login",
     16                     "params": {
     17                         "user": "Admin",
     18                         "password": "xxxx"
     19                         },
     20                     "id": 0
     21                     })
     22         request = urllib2.Request(self.url,data)
     23         for key in self.header:
     24             request.add_header(key,self.header[key])
     25         try:
     26             result = urllib2.urlopen(request)
     27         except URLError as e:
     28             print "Auth Failed, Please Check Your Name And Password:",e.code
     29         else:
     30             response = json.loads(result.read())
     31             result.close()
     32             authID = response['result']
     33             return authID
     34     def get_data(self,data,hostip=""):
     35         request = urllib2.Request(self.url,data)
     36         for key in self.header:
     37             request.add_header(key,self.header[key])
     38         try:
     39             result = urllib2.urlopen(request)
     40         except URLError as e:
     41             if hasattr(e, 'reason'):
     42                 print 'We failed to reach a server.'
     43                 print 'Reason: ', e.reason
     44             elif hasattr(e, 'code'):
     45                 print 'The server could not fulfill the request.'
     46                 print 'Error code: ', e.code
     47             return 0
     48         else:
     49             response = json.loads(result.read())
     50             result.close()
     51             return response
     52     def host_get(self,hostip):
     53         #hostip = raw_input("33[1;35;40m%s33[0m" % 'Enter Your Check Host:Host_ip :')
     54         data = json.dumps(
     55                 {
     56                     "jsonrpc": "2.0",
     57                     "method": "host.get",
     58                     "params": {
     59                         "output":["hostid","name","status","host"],
     60                         "filter": {"host": [hostip]}
     61                         },
     62                     "auth": self.authID,
     63                     "id": 1
     64                 })
     65         res = self.get_data(data)['result']
     66         if (res != 0) and (len(res) != 0):
     67             #for host in res:
     68             host = res[0]
     69             if host['status'] == '1':
     70                 print "	","33[1;31;40m%s33[0m" % "Host_IP:","33[1;31;40m%s33[0m" %host['host'].ljust(15),'	',"33[1;31;40m%s33[0m" % "Host_Name:","33[1;31;40m%s33[0m"% host['name'].encode('GBK'),'	',"33[1;31;40m%s33[0m" % u'unmonitor'.encode('GBK')
     71                 return host['hostid']
     72             elif host['status'] == '0':
     73                 print "	","33[1;32;40m%s33[0m" % "Host_IP:","33[1;32;40m%s33[0m" %host['host'].ljust(15),'	',"33[1;32;40m%s33[0m" % "Host_Name:","33[1;32;40m%s33[0m"% host['name'].encode('GBK'),'	',"33[1;32;40m%s33[0m" % u'monitor'.encode('GBK')
     74                 return host['hostid']
     75             print
     76         else:
     77             print '	',"33[1;31;40m%s33[0m" % "Get Host Error or cannot find this host,please check !"
     78             return 0
     79     def get_grouphost(self):
     80         groupid = raw_input("33[1;35;40m%s33[0m" % 'Enter Your groupid:')
     81         data = json.dumps(
     82             {
     83                "jsonrpc":"2.0",
     84                "method":"host.get",
     85                "params":{
     86                    "output":["hostid","name","status","host"],
     87                    #"output": "extend",
     88                    "groupids":groupid,
     89                },
     90                "auth": self.authID, 
     91                "id":1,
     92             })
     93         res = self.get_data(data)
     94         if 'result' in res.keys():
     95             res = res['result']
     96             if (res !=0) or (len(res) != 0):
     97                 print "33[1;32;40m%s33[0m" % "Number Of Hosts: ","33[1;31;40m%d33[0m" % len(res)
     98                 for host in res:
     99                     print "Host ID:",host['hostid'],"Visible name:",host['name'],"Host-status:",host['status'],"HostName:",host['host']
    100         else:
    101             print "The groupid does not exist, please check!"
    102 
    103 
    104 
    105 
    106 
    107     def host_del(self):
    108         hostip = raw_input("33[1;35;40m%s33[0m" % 'Enter Your Check Host:Host_ip :')
    109         hostid = self.host_get(hostip)
    110     print hostid
    111         if hostid == 0:
    112             print '	',"33[1;31;40m%s33[0m" % "This host cannot find in zabbix,please check it !"
    113             sys.exit()
    114         data = json.dumps(
    115                 {
    116                     "jsonrpc": "2.0",
    117                     "method": "host.delete",
    118                     "params": [hostid],
    119                     "auth": self.authID,
    120                     "id": 1
    121                 })
    122         res = self.get_data(data)['result']
    123         if 'hostids' in res.keys():
    124             print "	","33[1;32;40m%s33[0m" % "Delet Host:%s success !" % hostip
    125         else:
    126             print "	","33[1;31;40m%s33[0m" % "Delet Host:%s failure !" % hostip
    127     def hostgroup_get(self):
    128         data = json.dumps(
    129                 {
    130                     "jsonrpc": "2.0",
    131                     "method": "hostgroup.get",
    132                     "params": {
    133                         "output": "extend",
    134                         },
    135                     "auth": self.authID,
    136                     "id": 1,
    137                     })
    138         res = self.get_data(data)
    139         if 'result' in res.keys():
    140             res = res['result']
    141             if (res !=0) or (len(res) != 0):
    142                 print "33[1;32;40m%s33[0m" % "Number Of Group: ","33[1;31;40m%d33[0m" % len(res)
    143                 for host in res:
    144                     print"	","HostGroup_id:",host['groupid'],"	","HostGroup_Name:",host['name'].encode('GBK')
    145         else:
    146             print "Get HostGroup Error,please check !"
    147     def template_get(self):
    148         data = json.dumps(
    149                 {
    150                     "jsonrpc": "2.0",
    151                     "method": "template.get",
    152                     "params": {
    153                         "output": "extend",
    154                         },
    155                     "auth": self.authID,
    156                     "id": 1,
    157                     })
    158         res = self.get_data(data)#['result']
    159         if 'result' in res.keys():
    160             res = res['result']
    161             if (res !=0) or (len(res) != 0):
    162                 print "33[1;32;40m%s33[0m" % "Number Of Template: ","33[1;31;40m%d33[0m" % len(res)
    163                 for host in res:
    164                     print"	","Template_id:",host['templateid'],"	","Template_Name:",host['name'].encode('GBK')
    165                 print
    166         else:
    167             print "Get Template Error,please check !"
    168     def host_create(self):
    169         hostip = raw_input("33[1;35;40m%s33[0m" % 'Enter your:Host_ip :')
    170         #Visible_name = raw_input("33[1;35;40m%s33[0m" % 'Enter your:Visible name :')
    171         groupid = raw_input("33[1;35;40m%s33[0m" % 'Enter your:Group_id :')
    172         templateid = raw_input("33[1;35;40m%s33[0m" % 'Enter your:Tempate_id :')
    173         g_list=[]
    174         t_list=[]
    175         for i in groupid.split(','):
    176             var = {}
    177             var['groupid'] = i
    178             g_list.append(var)
    179         for i in templateid.split(','):
    180             var = {}
    181             var['templateid'] = i
    182             t_list.append(var)
    183         if hostip and groupid and templateid:
    184             data = json.dumps(
    185                     {
    186                         "jsonrpc": "2.0",
    187                         "method": "host.create",
    188                         "params": {
    189                             "host": hostip,
    190                             "interfaces": [
    191                                 {
    192                                     "type": 1,
    193                                     "main": 1,
    194                                     "useip": 1,
    195                                     "ip": hostip,
    196                                     "dns": "",
    197                                     "port": "10050"
    198                                 }
    199                             ],
    200                             "groups": g_list,
    201                             "templates": t_list,
    202                     },
    203                         "auth": self.authID,
    204                         "id": 1,
    205                         })
    206             res = self.get_data(data,hostip)
    207             if 'result' in res.keys():
    208                 res = res['result']
    209                 if 'hostids' in res.keys():
    210                     print "33[1;32;40m%s33[0m" % "Create host success"
    211             else:
    212                 print "33[1;31;40m%s33[0m" % "Create host failure: %s" % res['error']['data']
    213         else:
    214             print "33[1;31;40m%s33[0m" % "Enter Error: ip or groupid or tempateid is NULL,please check it !"
    215 def main():
    216     test = zabbixtools()
    217     test.template_get()
    218     test.hostgroup_get()
    219     #test.host_get()
    220     #test.host_del()
    221     test.host_create()
    222     #test.get_grouphost()
    223 if __name__ == "__main__":
    224     main()
  • 相关阅读:
    laravel打印SQL语句
    php扩展打开不起作用的原因, php数字显示2147483647的原因
    opacity与rgba
    package.json中devDependencies与dependencies的区别
    FileReader读取文件
    Vue双向绑定原理详解
    Vue2入门路线及资源
    gulp入门实践
    浏览器版本识别
    this用法
  • 原文地址:https://www.cnblogs.com/aslongas/p/5706941.html
Copyright © 2011-2022 走看看