python 调用zabbix api接口实现主机的增删改查
2016-07-26 11:49
453 查看
python程序调用zabbix系统的api接口实现对zabbix_server端主机的增删改查,使用相关功能时候,需要打开脚本中的相关函数。
函数说明:
zabbixtools() 调用zabbix api
template_get() 获取zabbix server端已经配置的模板信息
hostgroup_get() 获取已经添加的主机组列表信息
host_get() 单个主机信息
host_del() 删除主机
host_create() 新建主机
get_grouphost() 获取某个组下面所有的主机信息
函数说明:
zabbixtools() 调用zabbix api
template_get() 获取zabbix server端已经配置的模板信息
hostgroup_get() 获取已经添加的主机组列表信息
host_get() 单个主机信息
host_del() 删除主机
host_create() 新建主机
get_grouphost() 获取某个组下面所有的主机信息
#!/usr/bin/env python # -*- coding: utf-8 -*- import json import urllib2 import sys class zabbixtools: def __init__(self): self.url = "http://x.x.x.x/zabbix/api_jsonrpc.php" self.header = {"Content-Type": "application/json"} self.authID = self.user_login() def user_login(self): data = json.dumps( { "jsonrpc": "2.0", "method": "user.login", "params": { "user": "Admin", "password": "xxxx" }, "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() authID = response['result'] return authID def get_data(self,data,hostip=""): 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 return 0 else: response = json.loads(result.read()) result.close() return response def host_get(self,hostip): #hostip = raw_input("\033[1;35;40m%s\033[0m" % 'Enter Your Check Host:Host_ip :') data = json.dumps( { "jsonrpc": "2.0", "method": "host.get", "params": { "output":["hostid","name","status","host"], "filter": {"host": [hostip]} }, "auth": self.authID, "id": 1 }) res = self.get_data(data)['result'] if (res != 0) and (len(res) != 0): #for host in res: host = res[0] if host['status'] == '1': print "\t","\033[1;31;40m%s\033[0m" % "Host_IP:","\033[1;31;40m%s\033[0m" %host['host'].ljust(15),'\t',"\033[1;31;40m%s\033[0m" % "Host_Name:","\033[1;31;40m%s\033[0m"% host['name'].encode('GBK'),'\t',"\033[1;31;40m%s\033[0m" % u'unmonitor'.encode('GBK') return host['hostid'] elif host['status'] == '0': print "\t","\033[1;32;40m%s\033[0m" % "Host_IP:","\033[1;32;40m%s\033[0m" %host['host'].ljust(15),'\t',"\033[1;32;40m%s\033[0m" % "Host_Name:","\033[1;32;40m%s\033[0m"% host['name'].encode('GBK'),'\t',"\033[1;32;40m%s\033[0m" % u'monitor'.encode('GBK') return host['hostid'] print else: print '\t',"\033[1;31;40m%s\033[0m" % "Get Host Error or cannot find this host,please check !" return 0 def get_grouphost(self): groupid = raw_input("\033[1;35;40m%s\033[0m" % 'Enter Your groupid:') data = json.dumps( { "jsonrpc":"2.0", "method":"host.get", "params":{ "output":["hostid","name","status","host"], #"output": "extend", "groupids":groupid, }, "auth": self.authID, "id":1, }) res = self.get_data(data) if 'result' in res.keys(): res = res['result'] if (res !=0) or (len(res) != 0): print "\033[1;32;40m%s\033[0m" % "Number Of Hosts: ","\033[1;31;40m%d\033[0m" % len(res) for host in res: print "Host ID:",host['hostid'],"Visible name:",host['name'],"Host-status:",host['status'],"HostName:",host['host'] else: print "The groupid does not exist, please check!" def host_del(self): hostip = raw_input("\033[1;35;40m%s\033[0m" % 'Enter Your Check Host:Host_ip :') hostid = self.host_get(hostip) print hostid if hostid == 0: print '\t',"\033[1;31;40m%s\033[0m" % "This host cannot find in zabbix,please check it !" sys.exit() data = json.dumps( { "jsonrpc": "2.0", "method": "host.delete", "params": [hostid], "auth": self.authID, "id": 1 }) res = self.get_data(data)['result'] if 'hostids' in res.keys(): print "\t","\033[1;32;40m%s\033[0m" % "Delet Host:%s success !" % hostip else: print "\t","\033[1;31;40m%s\033[0m" % "Delet Host:%s failure !" % hostip def hostgroup_get(self): data = json.dumps( { "jsonrpc": "2.0", "method": "hostgroup.get", "params": { "output": "extend", }, "auth": self.authID, "id": 1, }) res = self.get_data(data) if 'result' in res.keys(): res = res['result'] if (res !=0) or (len(res) != 0): print "\033[1;32;40m%s\033[0m" % "Number Of Group: ","\033[1;31;40m%d\033[0m" % len(res) for host in res: print"\t","HostGroup_id:",host['groupid'],"\t","HostGroup_Name:",host['name'].encode('GBK') else: print "Get HostGroup Error,please check !" def template_get(self): data = json.dumps( { "jsonrpc": "2.0", "method": "template.get", "params": { "output": "extend", }, "auth": self.authID, "id": 1, }) res = self.get_data(data)#['result'] if 'result' in res.keys(): res = res['result'] if (res !=0) or (len(res) != 0): print "\033[1;32;40m%s\033[0m" % "Number Of Template: ","\033[1;31;40m%d\033[0m" % len(res) for host in res: print"\t","Template_id:",host['templateid'],"\t","Template_Name:",host['name'].encode('GBK') print else: print "Get Template Error,please check !" def host_create(self): hostip = raw_input("\033[1;35;40m%s\033[0m" % 'Enter your:Host_ip :') #Visible_name = raw_input("\033[1;35;40m%s\033[0m" % 'Enter your:Visible name :') groupid = raw_input("\033[1;35;40m%s\033[0m" % 'Enter your:Group_id :') templateid = raw_input("\033[1;35;40m%s\033[0m" % 'Enter your:Tempate_id :') g_list=[] t_list=[] for i in groupid.split(','): var = {} var['groupid'] = i g_list.append(var) for i in templateid.split(','): var = {} var['templateid'] = i t_list.append(var) if hostip and groupid and templateid: 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": g_list, "templates": t_list, }, "auth": self.authID, "id": 1, }) res = self.get_data(data,hostip) if 'result' in res.keys(): res = res['result'] if 'hostids' in res.keys(): print "\033[1;32;40m%s\033[0m" % "Create host success" else: print "\033[1;31;40m%s\033[0m" % "Create host failure: %s" % res['error']['data'] else: print "\033[1;31;40m%s\033[0m" % "Enter Error: ip or groupid or tempateid is NULL,please check it !" def main(): test = zabbixtools() test.template_get() test.hostgroup_get() #test.host_get() #test.host_del() test.host_create() #test.get_grouphost() if __name__ == "__main__": main()
相关文章推荐
- PyCharm2016.3专业版注册码
- ubuntu下怎么解决python "Non-ASCII character"错误
- Python学习笔记——文件写入和读取
- ipython notebook设置工作路径和自动保存.py文件 ipython_notebook_config.py
- Python(1):入门
- 【Python学习】python+Eclipse+pydev环境搭建
- Python 练习册,每天一个小程序(1)
- python学习第十天 -- 函数
- 列表、元组以及字符串
- python脚本编程:批量复制或删除文件
- python 元组列表字典的区别
- Python----压缩与解压缩文件
- python windows系统时间同步
- Python 练习实例21
- 数据抓取常用:python时间转换
- dbus-python指南
- Python获取Mac地址
- 习题25 更多更多的实践
- DAY11:leetcode #23 Merge k Sorted Lists
- python find() 与 rfind()的区别