中企动力网站建设 医疗,产品摄影,手机兼职赚钱软件,安庆网站建设哪家好zabbix 批量添加主机
1.1::通过本教程起到抛砖引玉效果#xff0c;希望各位朋友受益良多。
1.2::如您有任何问题请联系作者#xff0c;QQ1284524409。
1.3::以下提供的任何软件仅供学习交流使用。
1.4::**项目地址**
jihulib项目地址 #!/usr/bin/python # coding:utf-8 …zabbix 批量添加主机
1.1::通过本教程起到抛砖引玉效果希望各位朋友受益良多。
1.2::如您有任何问题请联系作者QQ1284524409。
1.3::以下提供的任何软件仅供学习交流使用。
1.4::**项目地址**
jihulib项目地址 #!/usr/bin/python # coding:utf-8 import json import urllib2 from urllib2 import URLError import sys, argparse import xlrd
defaultencoding utf-8 if sys.getdefaultencoding() ! defaultencoding: reload(sys) sys.setdefaultencoding(defaultencoding) class zabbix_api: def __init__(self): self.url http://127.0.0.1/zabbix/api_jsonrpc.php # 修改URL self.header {Content-Type:application/json} self.user_login() def user_login(self): data json.dumps({ jsonrpc: 2.0, method: user.login, params: { user: Admin, # web页面登录用户名 password: zabbix # web页面登录密码 }, id: 0 }) request urllib2.Request(self.url, data, self.header) try: result urllib2.urlopen(request, timeout 2) except URLError as e: print u\033[041m地址请求失败请检查!\033[0m \n\033[041m%s!\033[0m % e sys.exit(1) else: response json.loads(result.read()) result.close() if response.get(result,) ! : self.authID response[result] elif response.get(error,) ! : print u\033[041m用户认证失败请检查!\033[0m \n\033[041m%s\033[0m % (response[error][data]) sys.exit(1) #![01_创建模板] def template_get(self, templateName): data json.dumps({ jsonrpc:2.0, method:template.get, params:{ output: extend, filter: { host: templateName } }, auth:self.authID, id:1, }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! []: return response[result][0][templateid] else: return response[result] def template_create(self, templateName): default_id {} default_id[groupid] self.hostGroup_get(000_LocalTemplates) if default_id[groupid] []: self.hostGroup_create(000_LocalTemplates) default_id[groupid] self.hostGroup_get(000_LocalTemplates) name_list_1 [] for n_1 in templateName.split(//): name_1 {} name_1[name] n_1 name_list_1.append(name_1) name_list_2 [] for n_2 in range(len(name_list_1)): name_2 {} id_2 {} name_2[name] name_list_1[n_2][name] id_2[templateid] self.template_get(name_list_1[n_2][name]) if id_2[templateid] ! []: print u创建模板 : \033[041m%s\033[0m 失败!,模板重复创建 % name_list_1[n_2][name] continue name_list_2.append(name_2) for n_3 in range(len(name_list_2)): data json.dumps({ jsonrpc: 2.0, method: template.create, params: { host: name_list_2[n_3][name], groups: { groupid: default_id[groupid] }, }, auth: self.authID, id: 1 }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! : print u创建模板 : \033[042m%s\033[0m 成功!,模板ID为 : \033[042m%s\033[0m % (name_list_2[n_3][name], ,.join(response[result][templateids])) elif response.get(error,) ! : print u创建模板 : \033[041m%s\033[0m 失败!\n\033[041m%s\033[0m % (name_list_2[n_3][name], response[error][data]) def template_delete(self, templateName): name_list_1 [] for n_1 in templateName.split(//): name_1 {} name_1[name] n_1 name_list_1.append(name_1) name_list_2 [] id_list_2 [] for n_2 in range(len(name_list_1)): name_2 {} id_2 {} name_2[name] name_list_1[n_2][name] id_2[templateids] self.template_get(name_list_1[n_2][name]) if id_2[templateids] []: print u删除模板 : \033[041m%s\033[0m 失败!,模板不存在! % name_list_1[n_2][name] continue name_list_2.append(name_2) id_list_2.append(id_2) for n_3 in range(len(name_list_2)): data json.dumps({ jsonrpc: 2.0, method: template.delete, params: [ id_list_2[n_3][templateids] ], auth: self.authID, id: 1 }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! : print u删除模板 : \033[042m%s\033[0m 成功!,模板ID为 : \033[042m%s\033[0m % (name_list_2[n_3][name], ,.join(response[result][templateids])) elif response.get(error,) ! : print u删除模板 : \033[041m%s\033[0m 失败!\n\033[041m%s\033[0m % (name_list_2[n_3][name], response[error][data]) #![02_为模板创建应用集] def application_get(self, templateName, applicationName): data json.dumps({ jsonrpc:2.0, method:application.get, params:{ output: extend, hostids: self.template_get(templateName), filter:{ name: applicationName }, }, auth:self.authID, id:1, }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! []: return response[result][0][applicationid] else: return response[result] def application_create(self, templateName, applicationName): name_list_1 [] for n_1 in templateName.split(//): name_1 {} name_1[name] n_1 name_list_1.append(name_1) name_list_2 [] for n_2 in applicationName.split(//): name_2 {} name_2[name] n_2 name_list_2.append(name_2) if len(name_list_1) ! len(name_list_2): print u为模板删除应用集失败!,\033[041m输入的参数存在空值\033[0m sys.exit(1) name_list_3_1 [] name_list_3_2 [] id_list_3 [] for n_3 in range(len(name_list_1)): name_3_1 {} name_3_2 {} id_3 {} name_3_1[name] name_list_1[n_3][name] name_3_2[name] name_list_2[n_3][name] id_3[templateid] self.template_get(name_list_1[n_3][name]) if id_3[templateid] []: print u为模板 : \033[041m%s\033[0m 创建应用集失败!,\033[041m模板不存在\033[0m % name_list_1[n_3][name] continue name_list_3_1.append(name_3_1) name_list_3_2.append(name_3_2) id_list_3.append(id_3) name_list_4_1 [] name_list_4_2 [] id_list_4_1 [] id_list_4_2 [] for n_4 in range(len(name_list_3_1)): name_4_1 {} name_4_2 {} id_4_1 {} id_4_2 {} name_4_1[name] name_list_3_1[n_4][name] name_4_2[name] name_list_3_2[n_4][name] id_4_1[templateid] id_list_3[n_4][templateid] id_4_2[applicationid] self.application_get(name_list_3_1[n_4][name], name_list_3_2[n_4][name]) if id_4_2[applicationid] ! []: print u为模板 : \033[041m%s\033[0m 创建应用集 : \033[041m%s\033[0m 失败!,\033[041m应用集已存在!\033[0m % \ (name_list_3_1[n_4][name], name_list_3_2[n_4][name]) continue name_list_4_1.append(name_4_1) name_list_4_2.append(name_4_2) id_list_4_1.append(id_4_1) id_list_4_2.append(id_4_2) for n_5 in range(len(name_list_4_1)): data json.dumps({ jsonrpc: 2.0, method: application.create, params: { name: name_list_4_2[n_5][name], hostid: id_list_4_1[n_5][templateid], }, auth: self.authID, id: 1 }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! : print u为模板 : \033[042m%s\033[0m 创建应用集 : \033[042m%s\033[0m 成功!,并且应用集ID为 : \033[042m%s\033[0m % \ (name_list_4_1[n_5][name],name_list_4_2[n_5][name], ,.join(response[result][applicationids])) elif response.get(error,) ! : print u为模板 : \033[041m%s\033[0m 创建应用集 : \033[041m%s\033[0m 失败!\ \n\033[041m%s\033[0m % (name_list_4_1[n_5][name],name_list_4_2[n_5][name], response[error][data]) def application_delete(self, templateName, applicationName): name_list_1 [] for n_1 in templateName.split(//): name_1 {} name_1[name] n_1 name_list_1.append(name_1) name_list_2 [] for n_2 in applicationName.split(//): name_2 {} name_2[name] n_2 name_list_2.append(name_2) if len(name_list_1) ! len(name_list_2): print u为模板删除应用集失败!,\033[041m输入的参数存在空值\033[0m sys.exit(1) name_list_3_1 [] name_list_3_2 [] id_list_3 [] for n_3 in range(len(name_list_1)): name_3_1 {} name_3_2 {} id_3 {} name_3_1[name] name_list_1[n_3][name] name_3_2[name] name_list_2[n_3][name] id_3[templateid] self.template_get(name_list_1[n_3][name]) if id_3[templateid] []: print u为模板 : \033[041m%s\033[0m 删除应用集失败!,模板不存在 % name_list_1[n_3][name] continue name_list_3_1.append(name_3_1) name_list_3_2.append(name_3_2) id_list_3.append(id_3) name_list_4_1 [] name_list_4_2 [] id_list_4 [] for n_4 in range(len(name_list_3_1)): name_4_1 {} name_4_2 {} id_4 {} name_4_1[name] name_list_3_1[n_4][name] name_4_2[name] name_list_3_2[n_4][name] id_4[applicationid] self.application_get(name_list_3_1[n_4][name], name_list_3_2[n_4][name]) if id_4[applicationid] []: print u为模板删除应用集失败!,\033[041m应用集不存在\033[0m ! continue name_list_4_1.append(name_4_1) name_list_4_2.append(name_4_2) id_list_4.append(id_4) for n_5 in range(len(name_list_4_1)): data json.dumps({ jsonrpc: 2.0, method: application.delete, params: [ id_list_4[n_5][applicationid] ], auth: self.authID, id: 1 }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! : print u为模板 : \033[042m%s\033[0m 删除应用集 : \033[042m%s\033[0m 成功!,并且应用集ID为 : \033[042m%s\033[0m % \ (name_list_4_1[n_5][name],name_list_4_2[n_5][name], ,.join(response[result][applicationids])) elif response.get(error,) ! : print u为模板 : \033[041m%s\033[0m 删除应用集 : \033[041m%s\033[0m 失败!\ \n\033[041m%s\033[0m % (name_list_4_1[n_5][name],name_list_4_2[n_5][name], response[error][data]) #![03_为模板创建监控项] def item_get(self, templateName, itemName): data json.dumps({ jsonrpc:2.0, method:item.get, params:{ output: extend, hostids: self.template_get(templateName), filter:{ name: itemName }, }, auth:self.authID, id:1, }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! []: return response[result][0][itemid] else: return response[result] def item_create(self, templateName, itemApplication, itemName, itemKey, itemValueType, itemDely): name_list_1 [] for n_1 in templateName.split(//): name_1 {} name_1[name] n_1 name_list_1.append(name_1) name_list_2 [] for n_2 in itemApplication.split(//): name_2 {} name_2[name] n_2 name_list_2.append(name_2) name_list_3 [] for n_3 in itemName.split(//): name_3 {} name_3[name] n_3 name_list_3.append(name_3) name_list_4 [] for n_4 in itemKey.split(//): name_4 {} name_4[name] n_4 name_list_4.append(name_4) name_list_5 [] for n_5 in itemValueType.split(//): name_5 {} name_5[name] n_5 name_list_5.append(name_5) name_list_6 [] for n_6 in itemDely.split(//): name_6 {} name_6[name] n_6 name_list_6.append(name_6) if len(name_list_1) ! len(name_list_2) or \ len(name_list_1) ! len(name_list_3) or \ len(name_list_1) ! len(name_list_4) or \ len(name_list_1) ! len(name_list_5) or \ len(name_list_1) ! len(name_list_6): print u为模板创建监控项失败!,\033[041m输入的参数存在空值\033[0m sys.exit(1) name_list_7_1 [] name_list_7_2 [] name_list_7_3 [] name_list_7_4 [] name_list_7_5 [] name_list_7_6 [] id_list_7 [] for n_7 in range(len(name_list_1)): name_7_1 {} name_7_2 {} name_7_3 {} name_7_4 {} name_7_5 {} name_7_6 {} id_7 {} name_7_1[name] name_list_1[n_7][name] name_7_2[name] name_list_2[n_7][name] name_7_3[name] name_list_3[n_7][name] name_7_4[name] name_list_4[n_7][name] name_7_5[name] name_list_5[n_7][name] name_7_6[name] name_list_6[n_7][name] id_7[templateid] self.template_get(name_list_1[n_7][name]) if id_7[templateid] []: print u为模板 : \033[041m%s\033[0m 创建监控项失败!,模板不存在 % name_list_1[n_7][name] continue name_list_7_1.append(name_7_1) name_list_7_2.append(name_7_2) name_list_7_3.append(name_7_3) name_list_7_4.append(name_7_4) name_list_7_5.append(name_7_5) name_list_7_6.append(name_7_6) id_list_7.append(id_7) name_list_8_1 [] name_list_8_2 [] name_list_8_3 [] name_list_8_4 [] name_list_8_5 [] name_list_8_6 [] id_list_8_1 [] id_list_8_2 [] for n_8 in range(len(name_list_1)): name_8_1 {} name_8_2 {} name_8_3 {} name_8_4 {} name_8_5 {} name_8_6 {} id_8_1 {} id_8_2 {} name_8_1[name] name_list_7_1[n_8][name] name_8_2[name] name_list_7_2[n_8][name] name_8_3[name] name_list_7_3[n_8][name] name_8_4[name] name_list_7_4[n_8][name] name_8_5[name] name_list_7_5[n_8][name] name_8_6[name] name_list_7_6[n_8][name] id_8_1[templateid] id_list_7[n_8][templateid] id_8_2[applicationid] self.application_get(name_list_7_1[n_8][name], name_list_7_2[n_8][name]) if id_8_2[applicationid] []: print u为监控项 : \033[041m%s\033[0m 附加应用集 : \033[041m%s\033[0m 失败!,应用集不存在 % \ (name_list_7_3[n_8][name], name_list_7_2[n_8][name]) continue name_list_8_1.append(name_8_1) name_list_8_2.append(name_8_2) name_list_8_3.append(name_8_3) name_list_8_4.append(name_8_4) name_list_8_5.append(name_8_5) name_list_8_6.append(name_8_6) id_list_8_1.append(id_8_1) id_list_8_2.append(id_8_2) name_list_9_1 [] name_list_9_2 [] name_list_9_3 [] name_list_9_4 [] name_list_9_5 [] name_list_9_6 [] id_list_9_1 [] id_list_9_2 [] for n_9 in range(len(name_list_1)): name_9_1 {} name_9_2 {} name_9_3 {} name_9_4 {} name_9_5 {} name_9_6 {} id_9_1 {} id_9_2 {} id_9_3 {} name_9_1[name] name_list_8_1[n_9][name] name_9_2[name] name_list_8_2[n_9][name] name_9_3[name] name_list_8_3[n_9][name] name_9_4[name] name_list_8_4[n_9][name] name_9_5[name] name_list_8_5[n_9][name] name_9_6[name] name_list_8_6[n_9][name] id_9_1[templateid] id_list_8_1[n_9][templateid] id_9_2[applicationid] id_list_8_2[n_9][applicationid] id_9_3[itemid] self.item_get(name_list_8_1[n_9][name], name_list_8_3[n_9][name]) if id_9_3[itemid] ! []: print u为模板 : \033[041m%s\033[0m 创建监控项失败!,监控项 : \033[041m%s\033[0m 已存在,并且监控项ID为 : \033[041m%s\033[0m % \ (name_list_8_1[n_9][name], name_list_8_3[n_9][name], id_9_3[itemid]) continue name_list_9_1.append(name_9_1) name_list_9_2.append(name_9_2) name_list_9_3.append(name_9_3) name_list_9_4.append(name_9_4) name_list_9_5.append(name_9_5) name_list_9_6.append(name_9_6) id_list_9_1.append(id_9_1) id_list_9_2.append(id_9_2) for n_10 in range(len(name_list_9_1)): data json.dumps({ jsonrpc: 2.0, method: item.create, params: { hostid: id_list_9_1[n_10][templateid], applications: [id_list_9_2[n_10][applicationid]], name: name_list_9_3[n_10][name], type: 7, key_: name_list_9_4[n_10][name], value_type: name_list_9_5[n_10][name], delay: name_list_9_6[n_10][name] }, auth: self.authID, id: 1 }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! : print u为模板 : \033[042m%s\033[0m 创建监控项 : \033[042m%s\033[0m 成功!,并且监控项ID为 : \033[042m%s\033[0m % \ (name_list_9_1[n_10][name], name_list_9_3[n_10][name], ,.join(response[result][itemids])) elif response.get(error,) ! : print u为模板 : \033[041m%s\033[0m 创建监控项 : \033[041m%s\033[0m 失败!\ \n\033[041m%s\033[0m % (name_list_9_1[n_10][name], name_list_9_3[n_10][name], response[error][data]) def item_delete(self, templateName, itemName): name_list_1 [] for n_1 in templateName.split(//): name_1 {} name_1[name] n_1 name_list_1.append(name_1) name_list_2 [] for n_2 in itemName.split(//): name_2 {} name_2[name] n_2 name_list_2.append(name_2) if len(name_list_1) ! len(name_list_2): print u为模板删除应用集失败!,\033[041m输入的参数存在空值\033[0m sys.exit(1) name_list_3_1 [] name_list_3_2 [] id_list_3 [] for n_3 in range(len(name_list_1)): name_3_1 {} name_3_2 {} id_3 {} name_3_1[name] name_list_1[n_3][name] name_3_2[name] name_list_2[n_3][name] id_3[templateid] self.template_get(name_list_1[n_3][name]) if id_3[templateid] []: print u为模板 : \033[041m%s\033[0m 删除监控项失败!,模板不存在 % name_list_1[n_3][name] continue name_list_3_1.append(name_3_1) name_list_3_2.append(name_3_2) id_list_3.append(id_3) name_list_4_1 [] name_list_4_2 [] id_list_4 [] for n_4 in range(len(name_list_3_1)): name_4_1 {} name_4_2 {} id_4 {} name_4_1[name] name_list_3_1[n_4][name] name_4_2[name] name_list_3_2[n_4][name] id_4[itemid] self.item_get(name_list_3_1[n_4][name], name_list_3_2[n_4][name]) if id_4[itemid] []: print u为模板 : \033[041m%s\033[0m 删除监控项 : \033[041m%s\033[0m 失败!,\033[041m监控项不存在\033[0m ! %\ (name_list_4_1[n_4](name), name_list_4_2[n_4](name)) continue name_list_4_1.append(name_4_1) name_list_4_2.append(name_4_2) id_list_4.append(id_4) for n_5 in range(len(name_list_4_1)): data json.dumps({ jsonrpc: 2.0, method: item.delete, params: [ id_list_4[n_5][itemid] ], auth: self.authID, id: 1 }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! : print u为模板 : \033[042m%s\033[0m 删除监控项 : \033[042m%s\033[0m 成功!,并且应监控项ID为 : \033[042m%s\033[0m % \ (name_list_4_1[n_5][name],name_list_4_2[n_5][name], ,.join(response[result][itemids])) elif response.get(error,) ! : print u为模板 : \033[041m%s\033[0m 删除监控项 : \033[041m%s\033[0m 失败!\ \n\033[041m%s\033[0m % (name_list_4_1[n_5][name],name_list_4_2[n_5][name], response[error][data]) #![04_为模板创建触发器] def trigger_get(self, templateName, descriptionName): data json.dumps({ jsonrpc:2.0, method:trigger.get, params:{ output: extend, templateids: self.template_get(templateName), filter:{ description: descriptionName }, }, auth:self.authID, id:1, }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! []: return response[result][0][triggerid] else: return response[result] def trigger_create(self, templateName, itemName, descriptionName, expressionName): name_list_1 [] for n_1 in templateName.split(//): name_1 {} name_1[name] n_1 name_list_1.append(name_1) name_list_2 [] for n_2 in itemName.split(//): name_2 {} name_2[name] n_2 name_list_2.append(name_2) name_list_3 [] for n_3 in descriptionName.split(//): name_3 {} name_3[name] n_3 name_list_3.append(name_3) name_list_4 [] for n_4 in expressionName.split(//): name_4 {} name_4[name] n_4 name_list_4.append(name_4) if len(name_list_1) ! len(name_list_2) or \ len(name_list_1) ! len(name_list_3) or \ len(name_list_1) ! len(name_list_4): print u为模板创建触发器失败!,\033[041m输入的参数存在空值\033[0m sys.exit(1) name_list_5_1 [] name_list_5_2 [] name_list_5_3 [] name_list_5_4 [] for n_5 in range(len(name_list_1)): name_5_1 {} name_5_2 {} name_5_3 {} name_5_4 {} id_5 {} name_5_1[name] name_list_1[n_5][name] name_5_2[name] name_list_2[n_5][name] name_5_3[name] name_list_3[n_5][name] name_5_4[name] name_list_4[n_5][name] id_5[templateid] self.template_get(name_list_1[n_5][name]) if id_5[templateid] []: print u为模板 : \033[041m%s\033[0m 的监控项创建触发器失败!,模板不存在 % name_list_1[n_5][name] continue name_list_5_1.append(name_5_1) name_list_5_2.append(name_5_2) name_list_5_3.append(name_5_3) name_list_5_3.append(name_5_3) name_list_5_4.append(name_5_4) name_list_6_1 [] name_list_6_2 [] name_list_6_3 [] name_list_6_4 [] for n_6 in range(len(name_list_5_1)): name_6_1 {} name_6_2 {} name_6_3 {} name_6_4 {} id_6 {} name_6_1[name] name_list_5_1[n_6][name] name_6_2[name] name_list_5_2[n_6][name] name_6_3[name] name_list_5_3[n_6][name] name_6_4[name] name_list_5_4[n_6][name] id_6[itemid] self.item_get(name_list_5_1[n_6][name], name_list_5_2[n_6][name]) if id_6[itemid] []: print u为模板 : \033[041m%s\033[0m 的监控项 : \033[041m%s\033[0m 创建触发器失败!,监控项不存在 % \ (name_list_5_1[n_6][name], name_list_5_2[n_6][name]) continue name_list_6_1.append(name_6_1) name_list_6_2.append(name_6_2) name_list_6_3.append(name_6_3) name_list_6_4.append(name_6_4) name_list_7_1 [] name_list_7_2 [] name_list_7_3 [] name_list_7_4 [] for n_7 in range(len(name_list_5_1)): name_7_1 {} name_7_2 {} name_7_3 {} name_7_4 {} id_7 {} name_7_1[name] name_list_5_1[n_7][name] name_7_2[name] name_list_5_2[n_7][name] name_7_3[name] name_list_5_3[n_7][name] name_7_4[name] name_list_5_4[n_7][name] id_7[description] self.trigger_get(name_list_5_1[n_7][name], name_list_5_3[n_7][name]) if id_7[description] ! []: print u为模板 : \033[041m%s\033[0m 的监控项 : \033[041m%s\033[0m 创建触发器失败!,触发器 : \033[041m%s\033[0m 已存在,并且触发器ID为 : \033[041m%s\033[0m % \ (name_list_5_1[n_7][name], name_list_5_2[n_7][name], name_list_5_3[n_7][name], id_7[description]) continue name_list_7_1.append(name_7_1) name_list_7_2.append(name_7_2) name_list_7_3.append(name_7_3) name_list_7_4.append(name_7_4) for n_8 in range(len(name_list_7_1)): data json.dumps({ jsonrpc: 2.0, method: trigger.create, params: { description: name_list_7_3[n_8][name], expression: name_list_7_4[n_8][name], priority: 5, manual_close: 1 }, auth: self.authID, id: 1 }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! : print u为模板 : \033[042m%s\033[0m 的监控项 : \033[042m%s\033[0m 创建触发器 : \033[042m%s\033[0m 成功!,并且触发器ID为 : \033[042m%s\033[0m % \ (name_list_7_1[n_8][name], name_list_7_2[n_8][name], name_list_7_3[n_8][name], ,.join(response[result][triggerids])) elif response.get(error,) ! : print u为模板 : \033[041m%s\033[0m 的监控项 : \033[041m%s\033[0m 创建触发器 : \033[041m%s\033[0m 失败!\ \n\033[041m%s\033[0m % (name_list_7_1[n_8][name], name_list_7_2[n_8][name], name_list_7_3[n_8][name], response[error][data]) def trigger_delete(self, templateName, descriptionName): name_list_1 [] for n_1 in templateName.split(//): name_1 {} name_1[name] n_1 name_list_1.append(name_1) name_list_2 [] for n_2 in descriptionName.split(//): name_2 {} name_2[name] n_2 name_list_2.append(name_2) if len(name_list_1) ! len(name_list_2): print u为模板删除应用集失败!,\033[041m输入的参数存在空值\033[0m sys.exit(1) name_list_3_1 [] name_list_3_2 [] id_list_3 [] for n_3 in range(len(name_list_1)): name_3_1 {} name_3_2 {} id_3 {} name_3_1[name] name_list_1[n_3][name] name_3_2[name] name_list_2[n_3][name] id_3[triggerid] self.trigger_get(name_list_1[n_3][name], name_list_2[n_3][name]) if id_3[triggerid] []: print u为模板 : \033[041m%s\033[0m 删除触发器 : \033[041m%s\033[0m 失败!,\033[041m触发器不存在\033[0m ! % \ (name_list_1[n_3][name], name_list_2[n_3][name]) continue name_list_3_1.append(name_3_1) name_list_3_2.append(name_3_2) id_list_3.append(id_3) for n_4 in range(len(name_list_3_1)): data json.dumps({ jsonrpc:2.0, method:trigger.delete, params:[ id_list_3[n_4][triggerid] ], auth:self.authID, id:1, }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! : print u为模板 : \033[042m%s\033[0m 删除触发器 : \033[042m%s\033[0m 成功!,并且触发器ID为 : \033[042m%s\033[0m % \ (name_list_3_1[n_4][name], name_list_3_2[n_4][name], ,.join(response[result][triggerids])) elif response.get(error,) ! : print u为模板 : \033[041m%s\033[0m 删除触发器 : \033[041m%s\033[0m 失败!\ \n\033[041m%s\033[0m % (name_list_3_1[n_4][name], name_list_3_2[n_4][name], response[error][data]) #![05_创建主机] def host_get(self, hostName): data json.dumps({ jsonrpc:2.0, method:host.get, params:{ output: extend, filter: { host: hostName }, }, auth:self.authID, id:1, }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! []: return response[result][0][hostid] else: return response[result] def host_create(self, hostName): default_id {} default_id[groupid] self.hostGroup_get(000_LocalHost) if default_id[groupid] []: self.hostGroup_create(000_LocalHost) default_id[groupid] self.hostGroup_get(000_LocalHost) name_list_1 [] for n_1 in hostName.split(//): name_1 {} name_1[name] n_1 name_list_1.append(name_1) name_list_2 [] for n_2 in range(len(name_list_1)): name_2 {} id_2 {} name_2[name] name_list_1[n_2][name] id_2[hostid] self.host_get(name_list_1[n_2][name]) if id_2[hostid] ! []: print u创建主机 : \033[041m%s\033[0m 失败!,主机重复创建 % name_list_1[n_2][name] continue name_list_2.append(name_2) for n_3 in range(len(name_list_2)): data json.dumps({ jsonrpc:2.0, method:host.create, params:{ host: name_list_2[n_3][name], interfaces: [ { type: 1, main: 1, useip: 1, ip: 127.0.0.1, dns: , port: 10050 } ], groups: [ { groupid: default_id[groupid] } ], }, auth: self.authID, id:1 }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! : print u创建主机 : \033[042m%s\033[0m 成功!,主机ID为 : \033[042m%s\033[0m % (name_list_2[n_3][name], ,.join(response[result][hostids])) elif response.get(error,) ! : print u创建主机 : \033[041m%s\033[0m 失败!\n\033[041m%s\033[0m % (name_list_2[n_3][name], response[error][data]) def host_delete(self, hostName): name_list_1 [] for n_1 in hostName.split(//): name_1 {} name_1[name] n_1 name_list_1.append(name_1) name_list_2 [] id_list_2 [] for n_2 in range(len(name_list_1)): name_2 {} id_2 {} name_2[name] name_list_1[n_2][name] id_2[hostid] self.host_get(name_list_1[n_2][name]) if id_2[hostid] []: print u删除主机组 : \033[041m%s\033[0m 失败!,主机组不存在 % name_list_1[n_2][name] continue name_list_2.append(name_2) id_list_2.append(id_2) for n_3 in range(len(name_list_2)): data json.dumps({ jsonrpc: 2.0, method: host.delete, params: [ id_list_2[n_3][hostid] ], auth: self.authID, id: 1 }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! : print u删除主机 : \033[042m%s\033[0m 成功!,主机组ID为 : \033[042m%s\033[0m % (name_list_2[n_3][name], ,.join(response[result][hostids])) elif response.get(error,) ! : print u删除主机 : \033[041m%s\033[0m 失败!\n\033[041m%s\033[0m % (name_list_2[n_3][name], response[error][data]) #![06_为主机创建接口] def interface_get(self, hostName, ipName, portName): data json.dumps({ jsonrpc:2.0, method:hostinterface.get, params:{ output: extend, hostids: self.host_get(hostName), filter:{ ip: ipName, port: portName }, }, auth:self.authID, id:1, }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! []: return response[result][0][interfaceid] else: return response[result] def interface_massadd(self, hostName, ipName, portName, defaultName, typeName): name_list_1 [] for n_1 in hostName.split(//): name_1 {} name_1[name] n_1 name_list_1.append(name_1) name_list_2 [] for n_2 in ipName.split(//): name_2 {} name_2[name] n_2 name_list_2.append(name_2) name_list_3 [] for n_3 in portName.split(//): name_3 {} name_3[name] n_3 name_list_3.append(name_3) name_list_4 [] for n_4 in defaultName.split(//): name_4 {} name_4[name] n_4 name_list_4.append(name_4) name_list_5 [] for n_5 in typeName.split(//): name_5 {} name_5[name] n_5 name_list_5.append(name_5) if len(name_list_1) ! len(name_list_2) or \ len(name_list_1) ! len(name_list_3) or \ len(name_list_1) ! len(name_list_4) or \ len(name_list_1) ! len(name_list_5): print u为主机附加接口失败!,\033[041m输入的参数存在空值\033[0m sys.exit(1) name_list_6_1 [] name_list_6_2 [] name_list_6_3 [] name_list_6_4 [] name_list_6_5 [] id_list_6 [] for n_6 in range(len(name_list_1)): name_6_1 {} name_6_2 {} name_6_3 {} name_6_4 {} name_6_5 {} id_6 {} name_6_1[name] name_list_1[n_6][name] name_6_2[name] name_list_2[n_6][name] name_6_3[name] name_list_3[n_6][name] name_6_4[name] name_list_4[n_6][name] name_6_5[name] name_list_5[n_6][name] id_6[hostid] self.host_get(name_list_1[n_6][name]) if id_6[hostid] []: print u为主机附加接口失败!,主机 : \033[041m%s\033[0m 不存在 % name_list_1[n_6][name] continue name_list_6_1.append(name_6_1) name_list_6_2.append(name_6_2) name_list_6_3.append(name_6_3) name_list_6_4.append(name_6_4) name_list_6_5.append(name_6_5) id_list_6.append(id_6) name_list_7_1 [] name_list_7_2 [] name_list_7_3 [] name_list_7_4 [] name_list_7_5 [] id_list_7 [] for n_7 in range(len(name_list_1)): name_7_1 {} name_7_2 {} name_7_3 {} name_7_4 {} name_7_5 {} id_7_1 {} id_7_2 {} name_7_1[name] name_list_1[n_7][name] name_7_2[name] name_list_2[n_7][name] name_7_3[name] name_list_3[n_7][name] name_7_4[name] name_list_4[n_7][name] name_7_5[name] name_list_5[n_7][name] id_7_1[hostid] id_list_6[n_7][hostid] id_7_2[interfaceid] self.interface_get(name_list_1[n_7][name], name_list_2[n_7][name], name_list_3[n_7][name]) if id_7_2[interfaceid] ! []: print u为主机 : \033[041m%s\033[0m 附加接口失败!,接口 : \033[041m%s\033[0m 已存在,并且接口ID为 : \033[042m%s\033[0m % \ (name_list_1[n_7][name], name_list_3[n_7][name], id_7_2[interfaceid]) continue name_list_7_1.append(name_7_1) name_list_7_2.append(name_7_2) name_list_7_3.append(name_7_3) name_list_7_4.append(name_7_4) name_list_7_5.append(name_7_5) id_list_7.append(id_7_1) for n_8 in range(len(name_list_7_1)): data json.dumps({ jsonrpc: 2.0, method: hostinterface.massadd, params: { hosts: [ { hostid: id_list_7[n_8][hostid] } ], interfaces: [ { dns: , ip: name_list_7_2[n_8][name], main: name_list_7_4[n_8][name], port: name_list_7_3[n_8][name], type: name_list_7_5[n_8][name], useip: 1, } ], }, auth: self.authID, id: 1 }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! : print u为主机 : \033[042m%s\033[0m 附加接口 : \033[042m%s\033[0m 成功!,并且接口ID为 : \033[042m%s\033[0m % \ (name_list_7_1[n_8][name], name_list_7_3[n_8][name], ,.join(response[result][interfaceids][interfaceids])) elif response.get(error,) ! : print u为主机 : \033[041m%s\033[0m 附加接口 : \033[041m%s\033[0m 失败!\ \n\033[041m%s\033[0m % (name_list_7_1[n_8][name],name_list_7_3[n_8][name], response[error][data]) def interface_massRemove(self, hostName, ipName, portName): name_list_1 [] for n_1 in hostName.split(//): name_1 {} name_1[name] n_1 name_list_1.append(name_1) name_list_2 [] for n_2 in ipName.split(//): name_2 {} name_2[name] n_2 name_list_2.append(name_2) name_list_3 [] for n_3 in portName.split(//): name_3 {} name_3[name] n_3 name_list_3.append(name_3) if len(name_list_1) ! len(name_list_2) or \ len(name_list_1) ! len(name_list_3): print u为主机移除接口失败!,\033[041m输入的参数存在空值\033[0m sys.exit(1) name_list_4_1 [] name_list_4_2 [] name_list_4_3 [] id_list_4 [] for n_4 in range(len(name_list_1)): name_4_1 {} name_4_2 {} name_4_3 {} id_4 {} name_4_1[name] name_list_1[n_4][name] name_4_2[name] name_list_2[n_4][name] name_4_3[name] name_list_3[n_4][name] id_4[hostid] self.host_get(name_list_1[n_4][name]) if id_4[hostid] []: print u为主机 : \033[041m%s\033[0m 移除接口失败!,主机不存在 % name_list_1[n_4][name] continue name_list_4_1.append(name_4_1) name_list_4_2.append(name_4_2) name_list_4_3.append(name_4_3) id_list_4.append(id_4) name_list_5_1 [] name_list_5_2 [] name_list_5_3 [] id_list_5 [] for n_5 in range(len(name_list_1)): name_5_1 {} name_5_2 {} name_5_3 {} id_5_1 {} id_5_2 {} name_5_1[name] name_list_1[n_5][name] name_5_2[name] name_list_2[n_5][name] name_5_3[name] name_list_3[n_5][name] id_5_1[hostid] id_list_4[n_5][hostid] id_5_2[interfaceid] self.interface_get(name_list_1[n_5][name], name_list_2[n_5][name], name_list_3[n_5][name]) if id_5_2[interfaceid] []: print u为主机 : \033[041m%s\033[0m 移除接口失败!,接口 : \033[041m%s\033[0m 不存在 % (name_list_1[n_5][name], name_list_3[n_5][name]) continue name_list_5_1.append(name_5_1) name_list_5_2.append(name_5_2) name_list_5_3.append(name_5_3) id_list_5.append(id_5_1) for n_6 in range(len(name_list_5_1)): data json.dumps({ jsonrpc: 2.0, method: hostinterface.massremove, params: { hosts: [ { hostids: id_list_5[n_6][hostid] } ], interfaces: [ { dns: , ip: name_list_5_2[n_6][name], port: name_list_5_3[n_6][name], } ], }, auth: self.authID, id: 1 }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! : print u为主机 : \033[042m%s\033[0m 移除接口 : \033[042m%s\033[0m 成功!,并且接口ID为 : \033[042m%s\033[0m % \ (name_list_5_1[n_6][name], name_list_5_3[n_6][name], ,.join([str(i) for i in response[result][interfaceids]])) elif response.get(error,) ! : print u为主机 : \033[041m%s\033[0m 移除接口 : \033[041m%s\033[0m 失败!\ \n\033[041m%s\033[0m % (name_list_5_1[n_6][name], name_list_5_3[n_6][name], response[error][data]) #![07_为主机关联模板] def host_massadd(self, hostName, templateName): name_list_1 [] for n_1 in hostName.split(//): name_1 {} name_1[name] n_1 name_list_1.append(name_1) name_list_2 [] for n_2 in templateName.split(//): name_2 {} name_2[name] n_2 name_list_2.append(name_2) if len(name_list_1) ! len(name_list_2): print u为主机附加模板失败!,\033[041m输入的参数存在空值\033[0m sys.exit(1) name_list_3_1 [] name_list_3_2 [] id_list_3 [] for n_3 in range(len(name_list_1)): name_3_1 {} name_3_2 {} id_3 {} name_3_1[name] name_list_1[n_3][name] name_3_2[name] name_list_2[n_3][name] id_3[hostid] self.host_get(name_list_1[n_3][name]) if id_3[hostid] []: print u为主机 : \033[041m%s\033[0m 附加模板失败!,主机不存在 % name_list_1[n_3][name] continue name_list_3_1.append(name_3_1) name_list_3_2.append(name_3_2) id_list_3.append(id_3) name_list_4_1 [] name_list_4_2 [] id_list_4_1 [] id_list_4_2 [] for n_4 in range(len(name_list_3_1)): name_4_1 {} name_4_2 {} id_4_1 {} id_4_2 {} name_4_1[name] name_list_3_1[n_4][name] name_4_2[name] name_list_3_2[n_4][name] id_4_1[hostid] id_list_3[n_4][hostid] id_4_2[templateid] self.template_get(name_list_3_2[n_4][name]) if id_4_2[templateid] []: print u为主机附加模板 : \033[041m%s\033[0m 失败!,模板不存在! % name_list_3_2[n_4][name] continue name_list_4_1.append(name_4_1) name_list_4_2.append(name_4_2) id_list_4_1.append(id_4_1) id_list_4_2.append(id_4_2) for n_5 in range(len(name_list_4_1)): data json.dumps({ jsonrpc: 2.0, method: host.massadd, params: { hosts: [ { hostid: id_list_4_1[n_5][hostid] } ], templates: [ { templateid: id_list_4_2[n_5][templateid] } ], }, auth: self.authID, id: 1 }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! : print u为主机 : \033[042m%s\033[0m 附加模板 : \033[042m%s\033[0m 成功!,并且主机ID为 : \033[042m%s\033[0m % \ (name_list_4_1[n_5][name],name_list_4_2[n_5][name], ,.join(response[result][hostids])) elif response.get(error,) ! : print u为主机 : \033[041m%s\033[0m 附加模板 : \033[041m%s\033[0m 失败!,并且主机ID为 : \033[041m%s\033[0m \ \n\033[041m%s\033[0m % (name_list_4_1[n_5][name],name_list_4_2[n_5][name], id_list_4_2[n_5][templateid], response[error][data]) def host_massremove(self, hostName, templateName): name_list_1 [] for n_1 in hostName.split(//): name_1 {} name_1[name] n_1 name_list_1.append(name_1) name_list_2 [] for n_2 in templateName.split(//): name_2 {} name_2[name] n_2 name_list_2.append(name_2) if len(name_list_1) ! len(name_list_2): print u为主机附加模板失败!,\033[041m输入的参数存在空值\033[0m sys.exit(1) name_list_3_1 [] name_list_3_2 [] id_list_3 [] for n_3 in range(len(name_list_1)): name_3_1 {} name_3_2 {} id_3 {} name_3_1[name] name_list_1[n_3][name] name_3_2[name] name_list_2[n_3][name] id_3[hostid] self.host_get(name_list_1[n_3][name]) if id_3[hostid] []: print u为主机 : \033[041m%s\033[0m 附加模板失败!,主机不存在 % name_list_1[n_3][name] continue name_list_3_1.append(name_3_1) name_list_3_2.append(name_3_2) id_list_3.append(id_3) name_list_4_1 [] name_list_4_2 [] id_list_4_1 [] id_list_4_2 [] for n_4 in range(len(name_list_3_1)): name_4_1 {} name_4_2 {} id_4_1 {} id_4_2 {} name_4_1[name] name_list_3_1[n_4][name] name_4_2[name] name_list_3_2[n_4][name] id_4_1[hostid] id_list_3[n_4][hostid] id_4_2[templateid] self.template_get(name_list_3_2[n_4][name]) if id_4_2[templateid] []: print u为主机附加模板 : \033[041m%s\033[0m 失败!,模板不存在! % name_list_3_2[n_4][name] continue name_list_4_1.append(name_4_1) name_list_4_2.append(name_4_2) id_list_4_1.append(id_4_1) id_list_4_2.append(id_4_2) for n_5 in range(len(name_list_4_1)): data json.dumps({ jsonrpc: 2.0, method: host.massremove, params: { hostids: [ id_list_4_1[n_5][hostid] ], templateids_clear: id_list_4_2[n_5][templateid] }, auth: self.authID, id: 1 }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! : print u为主机 : \033[042m%s\033[0m 移除模板 : \033[042m%s\033[0m 成功!,并且主机ID为 : \033[042m%s\033[0m % \ (name_list_4_1[n_5][name],name_list_4_2[n_5][name], ,.join(response[result][hostids])) elif response.get(error,) ! : print u为主机 : \033[041m%s\033[0m 移除模板 : \033[041m%s\033[0m 失败!\ \n\033[041m%s\033[0m % (name_list_4_1[n_5][name],name_list_4_2[n_5][name], response[error][data]) #![08_创建主机组] def hostGroup_get(self, hostGroupName): data json.dumps({ jsonrpc:2.0, method:hostgroup.get, params:{ output: extend, filter: { name: hostGroupName } }, auth:self.authID, id:1, }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! []: return response[result][0][groupid] else: return response[result] def hostGroup_create(self, hostGroupName): name_list_1 [] for n_1 in hostGroupName.split(//): name_1 {} name_1[name] n_1 name_list_1.append(name_1) name_list_2 [] for n_2 in range(len(name_list_1)): name_2 {} id_2 {} name_2[name] name_list_1[n_2][name] id_2[groupid] self.hostGroup_get(name_list_1[n_2][name]) if id_2[groupid] ! []: print u创建主机组 : \033[041m%s\033[0m 失败!,主机组重复创建 % name_list_1[n_2][name] continue name_list_2.append(name_2) for n_3 in range(len(name_list_2)): data json.dumps({ jsonrpc: 2.0, method: hostgroup.create, params: { name: name_list_2[n_3][name] }, auth: self.authID, id: 1 }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! : print u创建主机组 : \033[042m%s\033[0m 成功!,主机组ID为 : \033[042m%s\033[0m % (name_list_2[n_3][name], ,.join(response[result][groupids])) elif response.get(error,) ! : print u创建主机组 : \033[041m%s\033[0m 失败!\n\033[041m%s\033[0m % (name_list_2[n_3][name], response[error][data]) def hostGroup_delete(self, hostGroupName): name_list_1 [] for n_1 in hostGroupName.split(//): name_1 {} name_1[name] n_1 name_list_1.append(name_1) name_list_2 [] id_list_2 [] for n_2 in range(len(name_list_1)): name_2 {} id_2 {} name_2[name] name_list_1[n_2][name] id_2[groupid] self.hostGroup_get(name_list_1[n_2][name]) if id_2[groupid] []: print u删除主机组 : \033[041m%s\033[0m 失败!,主机组不存在 % name_list_1[n_2][name] continue name_list_2.append(name_2) id_list_2.append(id_2) for n_3 in range(len(name_list_2)): data json.dumps({ jsonrpc: 2.0, method: hostgroup.delete, params: [ id_list_2[n_3][groupid] ], auth: self.authID, id: 1 }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! : print u删除主机组 : \033[042m%s\033[0m 成功!,主机组ID为 : \033[042m%s\033[0m % (name_list_2[n_3][name], ,.join(response[result][groupids])) elif response.get(error,) ! : print u删除主机组 : \033[041m%s\033[0m 失败!\n\033[041m%s\033[0m % (name_list_2[n_3][name], response[error][data]) #![09_为主机附加主机组] def hostGroup_massadd(self, hostName, hostGroupName): name_list_1 [] for n_1 in hostName.split(//): name_1 {} name_1[name] n_1 name_list_1.append(name_1) name_list_2 [] for n_2 in hostGroupName.split(//): name_2 {} name_2[name] n_2 name_list_2.append(name_2) if len(name_list_1) ! len(name_list_2): print u为主机附加主机组失败!,\033[041m输入的参数存在空值\033[0m sys.exit(1) name_list_3_1 [] name_list_3_2 [] id_list_3 [] for n_3 in range(len(name_list_1)): name_3_1 {} name_3_2 {} id_3 {} name_3_1[name] name_list_1[n_3][name] name_3_2[name] name_list_2[n_3][name] id_3[hostid] self.host_get(name_list_1[n_3][name]) if id_3[hostid] []: print u为主机 : \033[041m%s\033[0m 附加主机组失败!,主机不存在 % name_list_1[n_3][name] continue name_list_3_1.append(name_3_1) name_list_3_2.append(name_3_2) id_list_3.append(id_3) name_list_4_1 [] name_list_4_2 [] id_list_4_1 [] id_list_4_2 [] for n_4 in range(len(name_list_3_1)): name_4_1 {} name_4_2 {} id_4_1 {} id_4_2 {} name_4_1[name] name_list_3_1[n_4][name] name_4_2[name] name_list_3_2[n_4][name] id_4_1[hostid] id_list_3[n_4][hostid] id_4_2[groupid] self.hostGroup_get(name_list_3_2[n_4][name]) if id_4_2[groupid] []: print u为主机附加主机组 : \033[041m%s\033[0m 失败!,主机组不存在! % name_list_3_2[n_4][name] continue name_list_4_1.append(name_4_1) name_list_4_2.append(name_4_2) id_list_4_1.append(id_4_1) id_list_4_2.append(id_4_2) for n_5 in range(len(name_list_4_1)): data json.dumps({ jsonrpc: 2.0, method: host.massadd, params: { hosts: [ { hostid: id_list_4_1[n_5][hostid] } ], groups: [ { groupid: id_list_4_2[n_5][groupid] } ], }, auth: self.authID, id: 1 }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! : print u为主机 : \033[042m%s\033[0m 附加模板 : \033[042m%s\033[0m 成功!,并且主机ID为 : \033[042m%s\033[0m % \ (name_list_4_1[n_5][name],name_list_4_2[n_5][name], ,.join(response[result][hostids])) elif response.get(error,) ! : print u为主机 : \033[041m%s\033[0m 附加模板 : \033[041m%s\033[0m 失败!,并且主机ID为 : \033[041m%s\033[0m \ \n\033[041m%s\033[0m % (name_list_4_1[n_5][name],name_list_4_2[n_5][name], id_list_4_2[n_5][groupid], response[error][data]) def hostGroup_massremove(self, hostName, hostGroupName): name_list_1 [] for n_1 in hostName.split(//): name_1 {} name_1[name] n_1 name_list_1.append(name_1) name_list_2 [] for n_2 in hostGroupName.split(//): name_2 {} name_2[name] n_2 name_list_2.append(name_2) if len(name_list_1) ! len(name_list_2): print u为主机移除主机组失败!,\033[041m输入的参数存在空值\033[0m sys.exit(1) name_list_3_1 [] name_list_3_2 [] id_list_3 [] for n_3 in range(len(name_list_1)): name_3_1 {} name_3_2 {} id_3 {} name_3_1[name] name_list_1[n_3][name] name_3_2[name] name_list_2[n_3][name] id_3[hostid] self.host_get(name_list_1[n_3][name]) if id_3[hostid] []: print u为主机 : \033[041m%s\033[0m 移除主机组失败!,主机不存在 % name_list_1[n_3][name] continue name_list_3_1.append(name_3_1) name_list_3_2.append(name_3_2) id_list_3.append(id_3) name_list_4_1 [] name_list_4_2 [] id_list_4_1 [] id_list_4_2 [] for n_4 in range(len(name_list_3_1)): name_4_1 {} name_4_2 {} id_4_1 {} id_4_2 {} name_4_1[name] name_list_3_1[n_4][name] name_4_2[name] name_list_3_2[n_4][name] id_4_1[hostid] id_list_3[n_4][hostid] id_4_2[groupid] self.hostGroup_get(name_list_3_2[n_4][name]) if id_4_2[groupid] []: print u为主机移除主机组 : \033[041m%s\033[0m 失败!,主机组不存在! % name_list_3_2[n_4][name] continue name_list_4_1.append(name_4_1) name_list_4_2.append(name_4_2) id_list_4_1.append(id_4_1) id_list_4_2.append(id_4_2) for n_5 in range(len(name_list_4_1)): data json.dumps({ jsonrpc: 2.0, method: host.massremove, params: { hostids: [ id_list_4_1[n_5][hostid] ], groupids: id_list_4_2[n_5][groupid] }, auth: self.authID, id: 1 }) request urllib2.Request(self.url, data, self.header) result urllib2.urlopen(request) response json.loads(result.read()) result.close() if response.get(result,) ! : print u为主机 : \033[042m%s\033[0m 移除主机组 : \033[042m%s\033[0m 成功!,并且主机ID为 : \033[042m%s\033[0m % \ (name_list_4_1[n_5][name],name_list_4_2[n_5][name], ,.join(response[result][hostids])) elif response.get(error,) ! : print u为主机 : \033[041m%s\033[0m 移除主机组 : \033[041m%s\033[0m 失败!\ \n\033[041m%s\033[0m % (name_list_4_1[n_5][name],name_list_4_2[n_5][name], response[error][data])
if __name__ __main__: zabbix zabbix_api() #![01_创建模板] parser argparse.ArgumentParser(descriptionzabbix api , usage%(prog)s [options]) parser.add_argument(-ct, nargs, metavar(模板名称), destct, helpu创建模板(多个可用//隔开)) parser.add_argument(-cte, nargs?, metavar(无参数), destcte, defaultcte, \ helpu通过zabbix_api.xlsx的Sheet2表为A列的主机批量创建模板) parser.add_argument(-dt, metavar(模板名称), nargs, destdt, helpu删除模板(多个可用//隔开)) parser.add_argument(-dte, nargs?, metavar(无参数), destdte, defaultdte, \ helpu通过zabbix_api.xlsx的Sheet2表从A列批量删除模板) #![02_为模板创建应用集] parser.add_argument(-ca, nargs, metavar(模板名称 应用集名称), destca, \ helpu为模板(多个模板可用//隔开)创建应用集(多个应用集可用//隔开)) parser.add_argument(-cae, nargs?, metavar(无参数), destcae,defaultcae, \ helpu通过zabbix_api.xlsx的Sheet5表为A列模板批量创建B列应用集) parser.add_argument(-da, nargs, metavar(模板名称 应用集名称), destda, \ helpu为模板(多个模板可用//隔开)删除应用集(多个应用集可用//隔开)) parser.add_argument(-dae, nargs?, metavar(无参数), destdae,defaultdae, \ helpu通过zabbix_api.xlsx的Sheet5表为A列模板批量删除B列应用集) #![03_为模板创建监控项] parser.add_argument(-ci, nargs, \ metavar(模板名称 应用集名称 监控项名称 监控项键值 监控项信息类型 监控项更新间隔), \ destci, helpu为模板(多个模板可用//隔开)创建监控项(多个监控项可用//隔开)) parser.add_argument(-cie, nargs?, metavar(无参数), destcie,defaultcie, \ helpu通过zabbix_api.xlsx的Sheet5表为A列模板批量创建CDEF列监控项,并附加到B列应用集) parser.add_argument(-di, nargs, metavar(模板名称 应用集名称), destdi, \ helpu为模板(多个模板可用//隔开)删除监控项(多个监控项可用//隔开)) parser.add_argument(-die, nargs?, metavar(无参数), destdie,defaultdie, \ helpu通过zabbix_api.xlsx的Sheet5表为A列模板批量删除C列监控项) #![04_为模板创建触发器] parser.add_argument(-ctg, nargs, \ metavar(模板名称 监控项名称 触发器名称 触发器表达式), \ destctg, helpu为监控项(多个监控项可用//隔开)创建触发器(多个触发器可用//隔开)) parser.add_argument(-ctge, nargs?, metavar(无参数), destctge,defaultctge, \ helpu通过zabbix_api.xlsx的Sheet6表为A列模板的B列监控项批量创建CD列触发器) parser.add_argument(-dtg, nargs, metavar(模板名称 触发器名称), destdtg, \ helpu为模板(多个模板可用//隔开)删除触发器(多个触发器可用//隔开)) parser.add_argument(-dtge, nargs?, metavar(无参数), destdtge,defaultdtge, \ helpu通过zabbix_api.xlsx的Sheet6表为A列模板批量删除C列触发器) #![05_创建主机] parser.add_argument(-ch, nargs, metavar(主机名称), destch, \ helpu创建主机(多个可用//隔开)) parser.add_argument(-che, nargs?, metavar(无参数), destche, defaultche, \ helpu通过zabbix_api.xlsx的Sheet4表从A列批量创建主机) parser.add_argument(-dh, nargs, metavar(主机组名称), destdh, helpu删除主机组(多个可用//隔开)) parser.add_argument(-dhe, nargs?, metavar(无参数), destdhe, defaultdhe, \ helpu通过zabbix_api.xlsx的Sheet1表从A列批量删除主机组) #![06_为主机创建接口] parser.add_argument(-mai, nargs, \ metavar(主机名称 接口地址 接口端口 作为默认接口 接口类型), \ destmai, helpu为主机(多个主机可用//隔开)附加接口(多个接口可用//隔开)) parser.add_argument(-maie, nargs?, metavar(无参数), destmaie,defaultmaie, \ helpu通过zabbix_api.xlsx的Sheet4表为A列主机批量附加BCDE列接口) parser.add_argument(-mri, nargs, metavar(主机名称 接口地址 接口端口), destmri, \ helpu为主机(多个主机可用//隔开)移除接口(多个接口可用//隔开)) parser.add_argument(-mrie, nargs?, metavar(无参数), destmrie, defaultmrie, \ helpu通过zabbix_api.xlsx的Sheet4表为A列主机批量移除BC列接口) #![07_为主机关联模板] parser.add_argument(-mat, nargs, metavar(主机组名称 模板名称), destmat, \ helpu为主机(多个主机可用//隔开)附加模板(多个模板可用//隔开)) parser.add_argument(-mate, nargs?, metavar(无参数), destmate,defaultmate, \ helpu通过zabbix_api.xlsx的Sheet3表为A列主机组批量附加B列模板) parser.add_argument(-mrt, nargs, metavar(主机组名称 模板名称), destmrt, \ helpu为主机(多个主机可用//隔开)移除模板(多个模板可用//隔开)) parser.add_argument(-mrte, nargs?, metavar(无参数), destmrte, defaultmrte,\ helpu通过zabbix_api.xlsx的Sheet3表为A列主机组批量移除B列模板) #![08_创建主机组] parser.add_argument(-cg, nargs, metavar(主机组名称), destcg, helpu创建主机组(多个可用//隔开)) parser.add_argument(-cge, nargs?, metavar(无参数), destcge, defaultcge, \ helpu通过zabbix_api.xlsx的Sheet1表从A列批量创建主机组) parser.add_argument(-dg, nargs, metavar(主机组名称), destdg, helpu删除主机组(多个可用//隔开)) parser.add_argument(-dge, nargs?, metavar(无参数), destdge, defaultdge, \ helpu通过zabbix_api.xlsx的Sheet1表从A列批量删除主机组) #![09_为主机附加主机组] parser.add_argument(-mag, nargs, metavar(主机名称 模板名称), destmag, \ helpu为主机(多个主机可用//隔开)附加主机组(多个主机组可用//隔开)) parser.add_argument(-mage, nargs?, metavar(无参数), destmage,defaultmage, \ helpu通过zabbix_api.xlsx的Sheet3表为A列主机批量附加B列主机组) parser.add_argument(-mrg, nargs, metavar(主机组名称 模板名称), destmrg, \ helpu为主机(多个主机可用//隔开)移除主机组(多个主机组可用//隔开)) parser.add_argument(-mrge, nargs?, metavar(无参数), destmrge, defaultmrge,\ helpu通过zabbix_api.xlsx的Sheet3表为A列主机组批量移除B列主机组) parser.add_argument(-v, --version, actionversion, version%(prog)s 如有问题请联系作者QQ1284524409, helpu如有问题请联系作者QQ1284524409) if len(sys.argv) 1: print parser.print_help() else: args parser.parse_args() #![01_创建模板] if args.ct: zabbix.template_create(args.ct[0]) elif args.cte ! cte: workbook xlrd.open_workbook(zabbix_api.xlsx) for row in xrange(workbook.sheets()[0].nrows): if row 0: continue else: templateName workbook.sheets()[0].cell(row, 0).value if templateName : break try: zabbix.template_create(templateName) except Exception as e: print uSheet2表第\033[041m%s\033[0m行数据异常\n\033[041m%s\033[0m % (row 1, e) sys.exit(1) elif args.dt: zabbix.template_delete(args.dt[0]) elif args.dte ! dte: workbook xlrd.open_workbook(zabbix_api.xlsx) for row in xrange(workbook.sheets()[0].nrows): if row 0: continue else: templateName workbook.sheets()[0].cell(row, 0).value if templateName : break try: zabbix.template_delete(templateName) except Exception as e: print uSheet2表第\033[041m%s\033[0m行数据异常\n\033[041m%s\033[0m % (row 1, e) sys.exit(1) #![02_为模板创建应用集] elif args.ca: zabbix.application_create(args.ca[0], args.ca[1]) elif args.cae ! cae: workbook xlrd.open_workbook(zabbix_api.xlsx) for x in xrange(workbook.sheets()[1].nrows): if x 0: continue else: templateName workbook.sheets()[1].cell(x, 0).value if templateName : break applicationName workbook.sheets()[1].cell(x, 1).value if applicationName : break try: zabbix.application_create(templateName, applicationName) except Exception as e: print uSheet5表第\033[041m%s\033[0m行数据异常\n\033[041m%s\033[0m % (x 1, e) sys.exit(1) elif args.da: zabbix.application_delete(args.da[0], args.da[1]) elif args.dae ! dae: workbook xlrd.open_workbook(zabbix_api.xlsx) for x in xrange(workbook.sheets()[1].nrows): if x 0: continue else: templateName workbook.sheets()[1].cell(x, 0).value if templateName : break applicationName workbook.sheets()[1].cell(x, 1).value if applicationName : break try: zabbix.application_delete(templateName, applicationName) except Exception as e: print uSheet5表第\033[041m%s\033[0m行数据异常\n\033[041m%s\033[0m % (x 1, e) sys.exit(1) #![03_为模板创建监控项] elif args.ci: zabbix.item_create(args.ci[0], args.ci[1], args.ci[2], args.ci[3], args.ci[4], args.ci[5]) elif args.cie ! cie: workbook xlrd.open_workbook(zabbix_api.xlsx) for x in xrange(workbook.sheets()[6].nrows): if x 0: continue else: templateName workbook.sheets()[2].cell(x, 0).value if templateName : break itemApplication workbook.sheets()[2].cell(x, 1).value if itemApplication : break itemName workbook.sheets()[2].cell(x, 2).value if itemName : break itemKey workbook.sheets()[2].cell(x, 3).value if itemKey : break itemValueType workbook.sheets()[2].cell(x, 4).value if itemValueType : break itemDely workbook.sheets()[2].cell(x, 5).value if itemDely : break try: zabbix.item_create(templateName, itemApplication, itemName, itemKey, str(int(itemValueType)), itemDely) except Exception as e: print uSheet5表第\033[041m%s\033[0m行数据异常\n\033[041m%s\033[0m % (x 1, e) sys.exit(1) elif args.di: zabbix.item_delete(args.di[0], args.di[1]) elif args.die ! die: workbook xlrd.open_workbook(zabbix_api.xlsx) for x in xrange(workbook.sheets()[2].nrows): if x 0: continue else: templateName workbook.sheets()[2].cell(x, 0).value if templateName : break itemName workbook.sheets()[2].cell(x, 1).value if itemName : break try: zabbix.item_delete(templateName, itemName) except Exception as e: print uSheet5表第\033[041m%s\033[0m行数据异常\n\033[041m%s\033[0m % (x 1, e) sys.exit(1) #![04_为模板创建触发器] elif args.ctg: zabbix.trigger_create(args.ctg[0], args.ctg[1], args.ctg[2], args.ctg[3]) elif args.ctge ! ctge: workbook xlrd.open_workbook(zabbix_api.xlsx) for x in xrange(workbook.sheets()[3].nrows): if x 0: continue else: templateName workbook.sheets()[3].cell(x, 0).value if templateName : break itemName workbook.sheets()[3].cell(x, 1).value if itemName : break descriptionName workbook.sheets()[3].cell(x, 2).value if descriptionName : break expressionName workbook.sheets()[3].cell(x, 3).value if expressionName : break try: zabbix.trigger_create(templateName, itemName, descriptionName, expressionName) except Exception as e: print uSheet5表第\033[041m%s\033[0m行数据异常\n\033[041m%s\033[0m % (x 1, e) sys.exit(1) elif args.dtg: zabbix.trigger_delete(args.dtg[0], args.dtg[1]) elif args.dtge ! dtge: workbook xlrd.open_workbook(zabbix_api.xlsx) for x in xrange(workbook.sheets()[3].nrows): if x 0: continue else: templateName workbook.sheets()[3].cell(x, 0).value if templateName : break triggerName workbook.sheets()[3].cell(x, 2).value if triggerName : break try: zabbix.trigger_delete(templateName, triggerName) except Exception as e: print uSheet5表第\033[041m%s\033[0m行数据异常\n\033[041m%s\033[0m % (x 1, e) sys.exit(1) #![05_创建主机] elif args.ch: zabbix.host_create(args.ch[0]) elif args.che ! che: workbook xlrd.open_workbook(zabbix_api.xlsx) for row in xrange(workbook.sheets()[4].nrows): if row 0: continue else: hostName workbook.sheets()[4].cell(row, 0).value if hostName : break try: zabbix.host_create(hostName) except Exception as e: print uSheet4表第\033[041m%s\033[0m行数据异常\n\033[041m%s\033[0m % (row 1, e) sys.exit(1) elif args.dh: zabbix.host_delete(args.dh[0]) elif args.dhe ! dhe: workbook xlrd.open_workbook(zabbix_api.xlsx) for row in xrange(workbook.sheets()[4].nrows): if row 0: continue else: hosthost workbook.sheets()[4].cell(row, 0).value if hosthost : break try: zabbix.host_delete(hosthost) except Exception as e: print uSheet4表第\033[041m%s\033[0m行数据异常\n\033[041m%s\033[0m % (row 1, e) sys.exit(1) #![06_为主机创建接口] elif args.mai: zabbix.interface_massadd(args.mai[0], args.mai[1], args.mai[2], args.mai[3], args.mai[4]) elif args.maie ! maie: workbook xlrd.open_workbook(zabbix_api.xlsx) for col1 in xrange(workbook.sheets()[5].nrows): if col1 0: continue else: hostName workbook.sheets()[5].cell(col1, 0).value if hostName : break ipName workbook.sheets()[5].cell(col1, 1).value if ipName : break portName workbook.sheets()[5].cell(col1, 2).value if portName : break defaultName workbook.sheets()[5].cell(col1, 3).value if defaultName : break typeName workbook.sheets()[5].cell(col1, 4).value if typeName : break try: zabbix.interface_massadd(hostName, ipName, str(int(portName)), str(int(defaultName)), str(int(typeName))) except Exception as e: print uSheet4表第\033[041m%s\033[0m行数据异常\n\033[041m%s\033[0m % (col1 1, e) sys.exit(1) elif args.mri: zabbix.interface_massRemove(args.mri[0], args.mri[1], args.mri[2]) elif args.mrie ! mrie: workbook xlrd.open_workbook(zabbix_api.xlsx) for col1 in xrange(workbook.sheets()[5].nrows): if col1 0: continue else: hostName workbook.sheets()[5].cell(col1, 0).value if hostName : break ipName workbook.sheets()[5].cell(col1, 1).value if ipName : break portName workbook.sheets()[5].cell(col1, 2).value if portName : break try: zabbix.interface_massRemove(hostName, ipName, str(int(portName))) except Exception as e: print uSheet4表第\033[041m%s\033[0m行数据异常\n\033[041m%s\033[0m % (col1 1, e) sys.exit(1) #![07_为主机关联模板] elif args.mat: zabbix.host_massadd(args.mat[0], args.mat[1]) elif args.mate ! mate: workbook xlrd.open_workbook(zabbix_api.xlsx) for n_1 in xrange(workbook.sheets()[6].nrows): if n_1 0: continue else: hostgroup workbook.sheets()[6].cell(n_1, 0).value if hostgroup : break templateName workbook.sheets()[6].cell(n_1, 1).value if templateName : break try: zabbix.host_massadd(hostgroup, templateName) except Exception as e: print uSheet3表第\033[041m%s\033[0m行数据异常\n\033[041m%s\033[0m % (n_1 1, e) sys.exit(1) elif args.mrt: zabbix.host_massremove(args.mrt[0], args.mrt[1]) elif args.mrte ! mrte: workbook xlrd.open_workbook(zabbix_api.xlsx) for n_1 in xrange(workbook.sheets()[6].nrows): if n_1 0: continue else: hostgroup workbook.sheets()[6].cell(n_1, 0).value if hostgroup : break templateName workbook.sheets()[6].cell(n_1, 1).value if templateName : break try: zabbix.host_massremove(hostgroup, templateName) except Exception as e: print uSheet3表第\033[041m%s\033[0m行数据异常\n\033[041m%s\033[0m % (n_1 1, e) sys.exit(1) #![08_创建主机组] elif args.cg: zabbix.hostGroup_create(args.cg[0]) elif args.cge ! cge: workbook xlrd.open_workbook(zabbix_api.xlsx) for row in xrange(workbook.sheets()[7].nrows): if row 0: continue else: hostgroup workbook.sheets()[7].cell(row, 0).value if hostgroup : break try: zabbix.hostGroup_create(hostgroup) except Exception as e: print uSheet1表第\033[041m%s\033[0m行数据异常\n\033[041m%s\033[0m % (row 1, e) sys.exit(1) elif args.dg: zabbix.hostGroup_delete(args.dg[0]) elif args.dge ! dge: workbook xlrd.open_workbook(zabbix_api.xlsx) for row in xrange(workbook.sheets()[7].nrows): if row 0: continue else: hostgroup workbook.sheets()[7].cell(row, 0).value if hostgroup : break try: zabbix.hostGroup_delete(hostgroup) except Exception as e: print uSheet1表第\033[041m%s\033[0m行数据异常\n\033[041m%s\033[0m % (row 1, e) sys.exit(1) #![09_为主机附加主机组] elif args.mag: zabbix.hostGroup_massadd(args.mag[0], args.mag[1]) elif args.mage ! mage: workbook xlrd.open_workbook(zabbix_api.xlsx) for n_1 in xrange(workbook.sheets()[8].nrows): if n_1 0: continue else: hostName workbook.sheets()[8].cell(n_1, 0).value if hostName : break hostGroupName workbook.sheets()[8].cell(n_1, 1).value if hostGroupName : break try: zabbix.hostGroup_massadd(hostName, hostGroupName) except Exception as e: print uSheet3表第\033[041m%s\033[0m行数据异常\n\033[041m%s\033[0m % (n_1 1, e) sys.exit(1) elif args.mrg: zabbix.hostGroup_massremove(args.mrt[0], args.mrt[1]) elif args.mrge ! mrge: workbook xlrd.open_workbook(zabbix_api.xlsx) for n_1 in xrange(workbook.sheets()[8].nrows): if n_1 0: continue else: hostName workbook.sheets()[8].cell(n_1, 0).value if hostName : break hostGroupName workbook.sheets()[8].cell(n_1, 1).value if hostGroupName : break try: zabbix.hostGroup_massremove(hostName, hostGroupName) except Exception as e: print uSheet3表第\033[041m%s\033[0m行数据异常\n\033[041m%s\033[0m % (n_1 1, e) sys.exit(1)