def fread(self, file): portinfolist = [] portlist = [] crcBit, txBit, rxBit = False, False, False with open(file) as f: rd = f.read() lineset = rd.splitlines() self.line_tot_set = lineset num = 0 slot, pnum, portnum = 0, 0, 0 slotnum = 1 serial = '' portnum = 0 portmax = 0 serialBit = False txlist = [] rxlist = [] event_time = '' onlineBit = False for i in range(len(lineset)): line = lineset[i] # print line portinfo = {} if '# EXECUTE DATE :' in line: event_time = ''.join(line.split('EXECUTE DATE :')[1:]) event_time = event_time.replace('#', '').strip() if '#### DATA TIME :' in line: event_time = ''.join(line.split('EXECUTE DATE :')[1:]) event_time = event_time.replace('#', '').strip() # if '###***switchshow***###' in line: onlineBit = True title_line_set = [] if onlineBit: linenum = 1 if 'Port' in line and 'Status' in line: title_line_set = line.split() title_line_set['Port'] port_line_num = title_line_set.index('Port') status_line_num = title_line_set.index('Status') print len(title_line_set) if 'Online' in line: print line linetmp = line.split() port_num = linetmp[linenum] if len(linetmp) >= len(title_line_set): self.online_port_list.append(port_num) if '###***chassisshow***###' in line: serialBit = True onlineBit = False if serialBit: if 'Factory Serial Num:' in line: serial = line.split(':')[1].strip() serialBit = False if '###***' in line: crcBit, txBit, rxBit, thBit = False, False, False, False if '###***porterrshow***###' in line: crcBit = True if crcBit: crcset = line.split() # print len(crcset),crcset # print line # print len(crcset) > 10 and 'frames' not in line and 'tx' not in line # print '-'*40 if len(crcset ) > 10 and 'frames' not in line and 'tx' not in line: portinfo = {} portnum = crcset[0] portnum = portnum.replace(':', '') portinfo['portindex'] = portnum portinfo['crcerr'] = crcset[4] # if datetime =='': # datetime = time.strftime('%Y-%m-%d %H:%M:%S') # portinfo['datetime'] = datetime portinfo['serial'] = serial self.portinfolist.append(portinfo) self.portlist.append(portnum) # print '-'*50 # print crcset[0] # print crcset # print line # print portnum # print portinfo # if '###***sfpshow -all***###' in line: rxBit = True if rxBit: if re.search('^Slot ', line): slotline = line slotline = slotline.replace('Slot', '') slotline = slotline.replace('/Port', '') slotline = slotline.replace(':', '') stset = slotline.split() slot = int(stset[0]) pnum = int(stset[1]) listnum = self.getPortNum(self.portlist[num]) portinfo = self.portinfolist[listnum] portinfo['slot'] = slot portinfo['portnum'] = pnum self.portinfolist[listnum] = portinfo num = num + 1 if re.search('^Port', line) and 'SFP' not in line: pnum = line.split()[1].strip() pnum = pnum.replace(':', '') slot = 0 #print line,pnum,slot,len(self.portinfolist) portinfo = self.portinfolist[int(num)] portinfo['slot'] = slot portinfo['portnum'] = portinfo['portindex'] #print self.portinfolist[-1] self.portinfolist[int(num)] = portinfo num = num + 1 if ' GE: Port' in line: try: listnum = self.getPortNum(self.portlist[num]) portinfonum = self.portinfolist.index(listnum) del self.portinfolist[portinfonum] except: pass num = num + 1 if 'TX Power: ' in line: if 'uWatts' in line: tx = line.split('(')[1].split(')')[0] tx = tx.replace('uWatts', '') tx = tx.replace('uW', '') else: if '(' in line: tx = line.split('(')[1].split(')')[0] tx = tx.replace('uWatts', '') tx = tx.replace('uW', '') else: tx = line.split()[2] if 'inf' in tx: tx = '0' listnum = self.getPortNum(self.portlist[num - 1]) portinfo = self.portinfolist[listnum] portinfo['tx'] = tx self.portinfolist[listnum] = portinfo # crcerr = portinfolist[listnum]['crcerr'] # portinfolist[listnum] = {'num' : portlist[num],'tx' : tx,'crcerr' : crcerr } if 'RX Power:' in line: # print line 'uWatts' if 'uWatts' in line: rx = line.split('(')[1].split(')')[0] rx = rx.replace('uWatts', '') rx = rx.replace('uW', '') else: #print line if '(' in line: rx = line.split('(')[1].split(')')[0] rx = rx.replace('uWatts', '') rx = rx.replace('uW', '') else: rx = line.split()[2] if 'inf' in rx: rx = '0' print 'RX :', rx #sys.exit() listnum = self.getPortNum(self.portlist[num - 1]) portinfo = self.portinfolist[listnum] portinfo['rx'] = rx self.portinfolist[listnum] = portinfo if '###***portperfshow***###' in line: thBit = True thList = [] # print thBit if '###############################################################################' in line: thBit = False if thBit: linenum = i + 1 a = 0 for cnt in range(i + 1, len(lineset)): num = a % 4 # print lineset[cnt],num,cnt,i,linenum,a,len(lineset[cnt].split()) if num == 2 and len(lineset[cnt].split()) > 0: # print lineset[cnt] thList = thList + lineset[cnt].split() a = a + 1 resutllist = [] for i in range(len(self.portinfolist)): portInfo = self.portinfolist[i] th = thList[i] if th[-1] == 'k': # print th th = th.replace('k', '') th = float(th) * 1024 print th elif th[-1] == 'm': # print th th = th.replace('m', '') th = float(th) * 1024 * 1024 print th else: try: th = float(th) except: th = 0 pass if 'tx' not in portInfo.keys(): portInfo['tx'] = '0' portInfo['rx'] = '0' portInfo['throughput'] = th if 'slot' in portinfo.keys(): resutllist.append(portinfo) # se=serial.zfill(20) key = '%s::SAN_SWICH_PERFROM::%s' % (self.store_time, serial) lastkey = 'LASTKEY::%s' % serial self.r.set(lastkey, key) print 'portinfo list:', len(self.portinfolist) print self.portinfolist print '-' * 50 print self.online_port_list print '-' * 50 port_info_list = [] for port_info in self.portinfolist: if port_info['portindex'] in self.online_port_list: port_info_list.append(port_info) self.portinfolist = port_info_list print 'portinfo list:', len(self.portinfolist) print self.portinfolist self.r.lpush(key, str(self.portinfolist)) portinfo_insert.inst(self.portinfolist, self.store_time, event_time) self.setRedis() return True
def fread(self,file): portinfolist=[] portlist=[] crcBit,txBit,rxBit=False,False,False with open(file) as f: rd=f.read() lineset=rd.splitlines() num = 0 slot,pnum,portnum=0,0,0 slotnum=1 serial='' portnum = 0 portmax = 0 serialBit = False txlist=[] rxlist=[] for line in lineset : portinfo={} if '# EXECUTE DATE :' in line: datetime = ''.join(line.split('EXECUTE DATE :')[1:]) datetime = datetime.replace('#','').strip() if '#### DATA TIME :' in line: datetime = ''.join(line.split('#### DATA TIME :')[1:]) datetime = datetime.replace('#','').strip() if '###***chassisshow***###' in line: serialBit= True if serialBit: if 'Factory Serial Num:' in line: serial = line.split(':')[1].strip() serialBit = False if '###***' in line: crcBit,txBit,rxBit=False,False,False if '###***porterrshow***###' in line: crcBit=True if crcBit: crcset= line.split() # print len(crcset),crcset # print line # print len(crcset) > 10 and 'frames' not in line and 'tx' not in line # print '-'*40 if len(crcset) > 10 and 'frames' not in line and 'tx' not in line : portinfo={} portnum=crcset[0] portnum=portnum.replace(':','') portinfo['portindex'] = portnum ran=random.randrange(1,100) if ran < 2: crc = random.randrange(int(crcset[4]),int(crcset[4]) + 30) print portinfo,'CRC :',crc else: crc = crcset[4] portinfo['crcerr'] = crc # if datetime =='': # datetime = time.strftime('%Y-%m-%d %H:%M:%S') # portinfo['datetime'] = datetime portinfo['serial'] = serial self.portinfolist.append(portinfo) self.portlist.append(portnum) # print '-'*50 # print crcset[0] # print crcset # print line # print portnum # print portinfo # if '###***sfpshow -all***###' in line: rxBit = True if rxBit: if re.search('^Slot ', line) : slotline=line slotline=slotline.replace('Slot','') slotline=slotline.replace('/Port','') slotline=slotline.replace(':','') stset= slotline.split() slot=int(stset[0]) pnum=int(stset[1]) listnum=self.getPortNum(self.portlist[num]) portinfo = self.portinfolist[listnum] portinfo['slot'] = slot portinfo['portnum'] = pnum self.portinfolist[listnum] = portinfo num = num +1 if re.search('^Port', line) and 'SFP' not in line: pnum = line.split()[1].strip() pnum = pnum.replace(':','') slot=0 # print line,pnum,slot,len(self.portinfolist) portinfo=self.portinfolist[int(num)] portinfo['slot'] = slot portinfo['portnum'] = portinfo['portindex'] # print self.portinfolist[-1] self.portinfolist[int(num)] = portinfo num = num +1 if ' GE: Port' in line: try: listnum=self.getPortNum(self.portlist[num]) portinfonum=self.portinfolist.index(listnum) del self.portinfolist[portinfonum] except: pass num = num +1 if 'TX Power: ' in line: if 'uWatts' not in line: tx=line.split('(')[1].split(')')[0] tx=tx.replace('uW','') else: tx=line.split()[2] listnum=self.getPortNum(self.portlist[num-1]) portinfo = self.portinfolist[listnum] ran=random.randrange(1,300) if ran < 2: tx = random.randrange(100,300) print portinfo,'TX :',tx portinfo['tx'] = tx self.portinfolist[listnum] = portinfo # crcerr = portinfolist[listnum]['crcerr'] # portinfolist[listnum] = {'num' : portlist[num],'tx' : tx,'crcerr' : crcerr } if 'RX Power:' in line: # print slot,pnum,portlist[num] # print line if 'uWatts' not in line: rx=line.split('(')[1].split(')')[0] rx=rx.replace('uW','') else: # print line rx=line.split()[2] # print rx # print num # print '-'*50 listnum=self.getPortNum( self.portlist[num-1]) portinfo = self.portinfolist[listnum] portinfo['rx'] = rx ran=random.randrange(1,100) if ran < 2: rx = random.randrange(100,300) print portinfo,'RX :',rx portinfo['rx'] = rx self.portinfolist[listnum] = portinfo rtfile = os.path.join('ret''%s.tmp'%serial) resutllist=[] with open('result.txt','a') as f: for no in range(len(self.portinfolist)): portinfo = self.portinfolist[no] if 'slot' in portinfo.keys(): resutllist.append(portinfo) f.write(str(portinfo)+'\n') f.write(file) print 'serial :',serial print len(self.portinfolist) print file try: portinfo_insert.inst(resutllist,self.store_time,datetime) except: print 'error :',file
def main(self): headmsg=self.com.get_module_head_msg(s_hostname=self.name,s_ip=self.ip) print headmsg self.getOnlinePort() print 'online-port-list :' print self.portValue.keys() self.fileWrite(headmsg, 'w') cmd='date' title='###***{}***###'.format(cmd) self.fileWrite(title) ret=self.exec_cmd(cmd) self.fileWrite(ret) # self.onlinePort=self.getOnlinePort() print 'SFP bit :',self.targetList['sfp_bit'] if self.targetList['sfp_bit']: self.getSfp() else: for key in self.portValue.keys(): self.portValue[key]['tx'] = '-1' self.portValue[key]['rx'] = '-1' print 'Port value:',self.portValue print 'crc_bit',self.targetList['crc_bit'] if self.targetList['crc_bit']: self.getCrc() else: for key in self.portValue.keys(): self.portValue[key]['crcerr'] = '-1' if self.targetList['throughput_bit']: self.getThroughput() else: for key in self.portValue.keys(): self.portValue[key]['throughput'] = '-1' print '-'*50 print 'Port value:',self.portValue portvaluelise=self.sort_portValue() # print portvaluelise self.setRedisLastkey(portvaluelise) self.setRedis(portvaluelise) # print portvaluelise portinfo_insert.inst(portvaluelise,self.store_time,self.event_time) self.result_update('True') # print self.fileName # # # self.targetList['log_bit'] # # if self.targetList['throughput_bit']: # self.getThroughput() # # # self.run() # self.expectCmd() # endmsg = self.com.get_module_tail_msg() # self.fileWrite(endmsg) # # store_time=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') # # self.fread(self.fileName) # self.line_tot_set=self.get_line_set() # if self.targetList['log_bit']: # errdump -> snmp cmd='errdump' self.fileWrite('###***{}***###'.format(cmd)) ret=self.exec_cmd(cmd) self.fileWrite(ret) errdump_str.err_dump(self.sw_serial,ret).main() self.net_connect.disconnect() set_check_date(self.store_time,True,self.sw_serial)