Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
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)
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
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)
Ejemplo n.º 7
0
 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
Ejemplo n.º 8
0
    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
Ejemplo n.º 9
0
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)
Ejemplo n.º 10
0
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)
Ejemplo n.º 11
0
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--------------------")
Ejemplo n.º 12
0
 def testFailure(self):
     sys.platform = 'linux2'
     ipmi = ipmitool(self.console + 'df', self.password)
     self.assertRaises(IPMIError, ipmi.execute, 'chassis status')
Ejemplo n.º 13
0
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")
Ejemplo n.º 14
0
 def testFailure(self):
     sys.platform  = 'linux2'
     ipmi = ipmitool(self.console+'df', self.password)
     self.assertRaises(IPMIError, ipmi.execute, 'chassis status')
Ejemplo n.º 15
0
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")