def fru_ipmi(ipaddr): try: ipmi=ipmitool(ipaddr[0],ipaddr[1],ipaddr[2]) except: print("Fail to connect") return 0 print(ipmi) print(ipaddr) try: web_ip=ipmi.execute('fru list') except: print("Error") web_ip="None" return 0 msg=ipmi.output my_msg=ipmi.output note_test='/home/zhangshuo/sub/ipmitest/ipmitool/ipmi/fru_list/'+str(ipaddr[0])+'.txt' note_test="".join(note_test.split()) outputfile=open(note_test,'wb') line=outputfile.write(str(my_msg)) outputfile.flush() outputfile.close() del(outputfile) fd=open(note_test,'rw') mymsg=fd.readlines() new="" print(my_msg) return my_msg
def new_page(ipaddr): try: ipmi=ipmitool(ipaddr[0],ipaddr[1],ipaddr[2]) except: return 0 web_ip=ipmi.execute('sensor') print('working...') print("ip network ") msg=ipmi.output print(msg) mynote='/home/zhangshuo/sub/ipmitest/ipmitool/ipmi/view/'+str(ipaddr[0])+'.txt' mynote="".join(mynote.split()) putfile=open(mynote,'a') outputfile=open(mynote,'wb') line=outputfile.write(msg) #line = fo.write( str ) outputfile.flush() outputfile.close() del(outputfile) # os.system('bash new_graph.sh') print("正在进行数据采集....") mylist=[] def execCmd(cmd): r = os.popen(cmd) text = r.read() r.close() return text #myCmd="cat /home/zhangshuo/sub/ipmitest/ipmitool/ipmi/view/"+str(ipaddr[0])+".txt | awk '{print $1,$3,$4}'" myCmd="/home/zhangshuo/sub/ipmitest/ipmitool/ipmi/view/"+str(ipaddr[0]) myCmd="".join(myCmd.split()) myCmd="sudo cat "+myCmd+".txt | awk '{print $1,$3,$4}'" # mystr=execCmd("cat new.txt | awk '{print $1,$3,$4}'") mystr=execCmd(myCmd) mystr=mystr.split() num=len(mystr) print(num) i=2 new_number=[] while i<num : mylist.append(mystr[i]) if len(mystr[i]) > 3 : print(mystr[i]) new_num=float(mystr[i]) print(new_num) new_num=int(new_num) new_number.append(new_num) i=i+3 print(new_number) queue=list(new_number) starttime=int(time.time()) myrrd_text='/home/zhangshuo/sub/ipmitest/ipmitool/ipmi/rrdtext/'+str(ipaddr[0])+'.rrd' myrrd_text="".join(myrrd_text.split()) print(myrrd_text) update=rrdtool.updatev(myrrd_text,'%s:%s:%s:%s:%s:%s:%s' % (str(starttime),str(queue[0]),str(queue[1]),str(queue[2]),str(queue[3]),str(queue[4]),str(queue[5]))) print(update)
def testSubprocessMethod(self): sys.platform = 'linux2' ipmi = ipmitool(self.console, self.password) ipmi.execute('chassis status') print "Output : {0}".format(ipmi.output) print "Status : {0}".format(ipmi.status) print "Error : {0}".format(ipmi.error) self.assertEqual(ipmi.status, 0)
def testExpectMethod(self): sys.platform = 'sunos5' ipmi = ipmitool(self.console, self.password) ipmi.execute('chassis status') print "Output : {0}".format(ipmi.output) print "Status : {0}".format(ipmi.status) print "Error : {0}".format(ipmi.error) self.assertEqual(ipmi.status, None)
def ipmi_method(self, command): """Use ipmitool to run commands with ipmi protocol """ ipmi = ipmitool(self.console, self.password, self.username) if command == "reboot": self.ipmi_method(command="status") if self.output == "Chassis Power is off": command = "on" ipmi.execute(self.ipmi_map[command]) if ipmi.status: self.error = ipmi.error.strip() else: self.output = ipmi.output.strip() self.status = ipmi.status
def hide_page(ipaddr): try: ipmi=ipmitool(ipaddr[0],ipaddr[1],ipaddr[2]) except: return 0 web_ip=ipmi.execute('sensor') print('working...') print("ip network ") msg=ipmi.output print(msg) mynote='/home/zhangshuo/sub/ipmitest/ipmitool/ipmi/view/'+str(ipaddr[0])+'.txt' mynote="".join(mynote.split()) putfile=open(mynote,'a') outputfile=open(mynote,'wb') line=outputfile.write(msg) #line = fo.write( str ) outputfile.flush() outputfile.close() del(outputfile) # os.system('bash new_graph.sh') print("正在进行数据采集....") mylist=[] def execCmd(cmd): r = os.popen(cmd) text = r.read() r.close() return text #myCmd="cat /home/zhangshuo/sub/ipmitest/ipmitool/ipmi/view/"+str(ipaddr[0])+".txt | awk '{print $1,$3,$4}'" myCmd="/home/zhangshuo/sub/ipmitest/ipmitool/ipmi/view/"+str(ipaddr[0]) myCmd="".join(myCmd.split()) myCmd="sudo cat "+myCmd+".txt | awk '{print $1,$3,$4}'" # mystr=execCmd("cat new.txt | awk '{print $1,$3,$4}'") mystr=execCmd(myCmd) mystr=mystr.split() num=len(mystr)
def message_ipmi(ipaddr): try: ipmi=ipmitool(ipaddr[0],ipaddr[1],ipaddr[2]) except: print("Fail to connect") return 0 print(ipmi) print(ipaddr) try: web_ip=ipmi.execute('lan print 1') except: print("Error") web_ip="None" return 0 msg=ipmi.output my_msg=ipmi.output note_test='/home/zhangshuo/sub/ipmitest/ipmitool/ipmi/lan_print/'+str(ipaddr[0])+'.txt' note_test="".join(note_test.split()) outputfile=open(note_test,'wb') line=outputfile.write(str(my_msg)) outputfile.flush() outputfile.close() del(outputfile)
def message_ipmi(ipaddr): try: ipmi = ipmitool(ipaddr[0], ipaddr[1], ipaddr[2]) except: print("Fail to connect") return 0 print(ipmi) print(ipaddr) try: web_ip = ipmi.execute('fru list') except: print("Error") web_ip = "None" return 0 msg = ipmi.output my_msg = ipmi.output note_test = '/home/zhangshuo/sub/ipmitest/ipmitool/ipmi/lan_print/' + str( ipaddr[0]) + '.txt' note_test = "".join(note_test.split()) outputfile = open(note_test, 'wb') line = outputfile.write(str(my_msg)) outputfile.flush() outputfile.close() del (outputfile) fd = open(note_test, 'rw') mymsg = fd.readlines() print(mymsg[0]) try: newmsg = mymsg[5].split(':')[0] nowmsg = mymsg[13].split(':')[0] except: # print(str(nowmsg)) print("IIIIIIIIIIIIIIIIIII--------------------")
def testFailure(self): sys.platform = 'linux2' ipmi = ipmitool(self.console + 'df', self.password) self.assertRaises(IPMIError, ipmi.execute, 'chassis status')
def myipaddr(ipaddr): try: ipmi = ipmitool(ipaddr[0], ipaddr[1], ipaddr[2]) except: print("Fail to connect") return 0 print(ipmi) print(ipaddr) try: web_ip = ipmi.execute('sel list') except: print("Error") web_ip = "None" return 0 msg = ipmi.output my_msg = ipmi.output print(msg) print("**************") note_test = '/home/zhangshuo/sub/ipmitest/ipmitool/ipmi/data/' + str( ipaddr[0]) + '.txt' note_test = "".join(note_test.split()) new_file = open(note_test).read() print(new_file) # msg=list(msg.split()) res = cmp(len(msg), len(new_file)) print(len(new_file)) print(len(msg)) print("pppppooooooo") print(res) # print("::::::::") if res != 0: print(my_msg) outputfile = open(note_test, 'wb') line = outputfile.write(str(my_msg)) outputfile.flush() outputfile.close() del (outputfile) my_msg = my_msg.split('\n') new_page = list(my_msg) # new_page=new_page.split() # print("This is a message") #File "ipmicli.py", line 92, in myipaddr print(new_page[1].split('|')[3]) #IndexError: list index out of range , 26, 25, 36.0 #Interface 35.000 2642.000 335.0 print(new_page[1].split('|')[3]) flag_str = ' Unknown' i = 0 mystr = "" while new_page[i]: if 1 != cmp(str(new_page[i].split('|')[3]), flag_str): sel_msg = new_page[i].split('|') # print("web") print(sel_msg) if 1 != cmp(str(sel_msg[3]), 'Unknown'): print(sel_msg[3]) mystr = mystr + '\n' + ''' <p> 日期:''' + str( sel_msg[1]) + ''' <p> 时间:''' + str( sel_msg[2]) + ''' <p> 配置:''' + str( sel_msg[3]) + ''' <p> 事件:''' + str( sel_msg[4] ) + ''' <p> ''' + '\n' + '''<p>.''' # mystr.append('\n\r') i = i + 1 print(mystr) SendEmail("*****@*****.**", "*****@*****.**", "warning", "Error", mystr) mobile = "18810919149" # print(send_sms(mystr, mobile)) else: print("without any problem")
def testFailure(self): sys.platform = 'linux2' ipmi = ipmitool(self.console+'df', self.password) self.assertRaises(IPMIError, ipmi.execute, 'chassis status')
def myipaddr(ipaddr): try: ipmi=ipmitool(ipaddr[0],ipaddr[1],ipaddr[2]) except: print("Fail to connect") return 0 print(ipmi) print(ipaddr) try: web_ip=ipmi.execute('sel list') except: print("Error") web_ip="None" return 0 msg=ipmi.output my_msg=ipmi.output print(msg) # print("**************") note_test='/home/zhangshuo/sub/ipmitest/ipmitool/ipmi/data/'+str(ipaddr[0])+'.txt' note_test="".join(note_test.split()) new_file=open(note_test).read() # print(new_file) # msg=list(msg.split()) res=cmp(len(msg),len(new_file)) print(len(new_file)) print(res) frustr=fru_ipmi(ipaddr) frustr=frustr.split('\n') mysub="" frustr=list(frustr) mylen=len(frustr) i=0 for i in range(mylen): mysub=mysub+str(frustr[i])+'''<p>''' mysub="出现异常的设备:"+str(ipaddr[0])+'''<p>'''+mysub mysub=mysub+'''<p>'''+'''详细信息:请您进入 http://172.31.105.11:12345/message/''' SendEmail("*****@*****.**","*****@*****.**","warning","Error",mysub); if res != 0: print(my_msg) outputfile=open(note_test,'wb') line=outputfile.write(str(my_msg)) outputfile.flush() outputfile.close() del(outputfile) my_msg=my_msg.split('\n') new_page=list(my_msg) print(new_page[1].split('|')[3]) flag_str=' Unknown' i=0 mystr="" while new_page[i] : if 1 != cmp(str(new_page[i].split('|')[3]),flag_str) : sel_msg=new_page[i].split('|') print(sel_msg) if 1 != cmp(str(sel_msg[3]),'Unknown') : print(sel_msg[3]) mystr=mystr+'\n'+''' <p> 日期:'''+str(sel_msg[1])+''' <p> 时间:'''+str(sel_msg[2])+''' <p> 配置:'''+str(sel_msg[3])+''' <p> 事件:'''+str(sel_msg[4])+''' <p> '''+'\n'+'''<p>.''' # mystr.append('\n\r') msg_str=msg_str+''' 日期:'''+str(sel_msg[1])+''' 时间:'''+str(sel_msg[2])+''' 配置:'''+str(sel_msg[3])+''' 事件:'''+str(sel_msg[4]) i=i+1 print(mystr) mylist=[] def execCmd(cmd): r = os.popen(cmd) text = r.read() r.close() return text myCmd="/home/zhangshuo/sub/ipmitest/ipmitool/ipmi/view/"+str(ipaddr[0]) myCmd="".join(myCmd.split()) myCmd="sudo cat "+myCmd+".txt | awk '{print $1,$3,$4,$5,$6}'" # mystr=execCmd("cat new.txt | awk '{print $1,$3,$4}'") mystr=execCmd(myCmd) mystr=mystr.split('\r') i=len(mystr) print(i) new=mystr #.remove("|") print('working...') print("ip network ") now=mystr[0].splitlines() # print(now) my_sub="" print(new) mylist="" for mylist in now: mylist= filter(lambda x:x !='|',mylist) my_sub=my_sub+str(mylist)+'''<p>''' print(mylist) my_sub="出现异常的设备:"+str(ipaddr[0])+'''<p>'''+"以下是最新服务器IPMI状态,包括温度和电压:"+'''<p>'''+my_sub SendEmail("*****@*****.**","*****@*****.**","warning","Error",my_sub); newgraph(ipaddr) os.system("cp Flow.png /home/zhangshuo/sub/ipmitest/ipmitool/ipmi/pic") os.system("sudo python email_png.py") frustr=fru_ipmi(ipaddr) frustr=frustr.split('\n') mysub="" frustr=list(frustr) mylen=len(frustr) i=0 for i in range(mylen): mysub=mysub+str(frustr[i])+'''<p>''' mysub="出现异常的设备:"+str(ipaddr[0])+'''<p>'''+mysub mysub=mysub+'''<p>'''+'''详细信息:请您进入 http://172.31.105.11:12345/message/''' SendEmail("*****@*****.**","*****@*****.**","warning","Error",mysub); mobile = "18810919149" text="警报:设备"+ipaddr[0]+",出现异常:"+str(msg_str) text=str(text) print(send_sms(text, mobile)) else: print("without any problem")