msgDic[role].append(errMessage) else: msgDic[role] = [errMessage] for role in msgDic.keys(): # 遍历字典的key值 phoneSql = ( "select t.phone_no from monitor.vop_mot_role_phone t where t.role_name='%s'" % role ) # 获取每个角色对应的电话号码 db.executeSQL(cursor, phoneSql) result = db.getSQLrst(cursor) errMsgList = msgDic[role] # 短信内容列表 print errMsgList phoneNumList = [] for phone in result: phone = phone[0] phoneNumList.append(phone) # 获取号码列表 message_send(errMsgList, phoneNumList) # 发送短信 id = tuple(idList) # 刚才发送出去的信息 res_log_id dealSql = dealSql() # 生成更新res_flag 的sql upSql = dealSql.upResIdSql(id) if upSql: # 如果sql存在 db.executeSQL(cursor, upSql) # 执行sql db.sqlcommit(dbconn) # 提交 print "update is ok" except Exception, e: err = "%s %s" % (datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), "mainMessage Send message falied") with open(r"./log/message_error.log", "a") as error_log: print >> error_log, ("%s %s" % (err, e)) finally: db.closeCursor(cursor) # 关闭数据库链接 db.closeConnect(dbconn) # 关闭数据库链接
#从数据库 获取主机信息,监控命令,监控类型的sql db=dealOracle() #实例化处理oracle数据库的类 filename='./config/dbinfo.ini' #链接数据库的配置文件 dblist=db.getConnectInfo(filename) dbconn=db.connectDb(dblist[0]) #链接数据库 cursor=db.getCursor(dbconn) #获取游标 db.executeSQL(cursor,infoSql) #执行sql result=db.getSQLrst(cursor) #获取sql执行结果 time.sleep(2) deal=dealdbInfo() #实例化处理信息的类,根据命令执行的频率,判断那条命令应该执行 infoDic=deal.dealInfo(result)#获取处理后的命令的结果 ssh=getData() #实例化ssh 登录主机获取主机监控信息的类 data=ssh.sshMain(infoDic)#获取主机的监控信息 id=tuple(data[1]) #获取执行的命令的id,用来更新vop_mot_cmd_conf 表的命令执行时间exce_time result=data[0] #获取执行命令的结果 dealSql=dealSql()#实例化处理sql的类 updateSql=dealSql.upCmdIdSql(id)#获取更新vop_mot_cmd_conf 表exce_time 的sql if updateSql: #如果sql 存在 updateSql=updateSql % now db.executeSQL(cursor,updateSql) #执行updatesql db.sqlcommit(dbconn) #提交 dealData=dealData() #实例化 处理 采集到的 监控 信息的类 resList=dealData.dealRes(result) # 获取处理后的结果 insertList=[] for res in resList: #遍历处理结果 errMsg=res[1]+':'+res[2]+','+res[3] roleName=res[0] insertSql="""insert into monitor.vop_mot_res_log (res_log_id,err_content,res_flag,insert_time,role_name,mot_msg,err_value) values (SEQ_ON_VOP_MOT_RES_LOG.nextval,'%s','0',sysdate,'%s','%s','%s')""" % (errMsg,roleName,res[4],res[5]) insertList.append(insertSql) #获取 insert vop_mot_res_log 表的sql 是个列表 for insertSql in insertList: # 遍历 列表 db.executeSQL(cursor,insertSql) # 将处理后 达到告警阀值的信息 插入到vop_mot_res_log 表