赞
踩
备注:telnetdo的代码来自网络,表示非常的感谢!自己根据实际的工作需要,增加了一小点东西,也分享希望有用的人可以拿去使用。
========================================
总共贴3个部分:
第一个部分是修改后可以直接进行telnet登录测试的Python脚本。
第二部分是为了测试失败或成功,在控制台显示带颜色的提示信息的Python代码,同样来自网络。
第三部分是为了实现整个测试自动进行,而写的一个Windows批处理小脚本代码。
==========================================
第一部全部代码:
#encoding:utf-8
#函数telnetdo用于登录终端设备,执行命令,返回终端的返回信息
def telnetdo(HOST=None, USER=None, PASS=None, COMMAND=None):
#define a function
import
telnetlib, sys
if not
HOST:
try:
HOST = sys.argv[1]
USER = sys.argv[2]
PASS = sys.argv[3]
COMMAND = sys.argv[4]
except:
print "Usage: telnetdo.py host user pass command"
return
msg =
['Debug messages:\n']
tn =
telnetlib.Telnet()
try:
tn.open(HOST)
except:
print "Cannot open host"
return
tn.read_until("login:")
tn.write(USER + '\n')
if
PASS:
#msg.append(tn.expect(['Password:'], 5))
tn.read_until("Password:")
tn.write(PASS + '\n')
tn.write( COMMAND + '\n')
tn.write("exit\n")
tmp =
tn.read_all()
tn.close()
del tn
return
tmp
#暂时没有使用
def TestPass():
return
'*'*12 + ' Test Pass !!! ' + '*'*12
def TestFail():
return
'*'*12 + ' Test Fail !!! ' + '*'*12
if __name__ == '__main__':
import
sys
import
tchcolor #Windows下改变字体颜色的模块,来自网络。
i =
0 #用于从列表中一个一个将命令读取出来,同时从测试项和匹配结果字典里依次取出对应的值。
flag = True
# 用于测试完毕后检查整个ONU的测试结果是pass还是fail
try:
fileName =
sys.argv[1] #从外部调用的程序传入日志文件的名字
except:
print "Please Inpute the Log FileName !"
sys.exit(1) #测试失败,往外部调用的程序返回1,在外部判断返回的值,看是否执行最后的打开网页。电平判断。
#测试命令列表,所有的执行命令加到此列表中。
cmds =
["tcapi show EPON_ONU","tcapi show EPON_ONU","tcapi show
EPON_ONU",'tcapi show EPON_ONU','\
tcapi show
EPON_ONU',"tcapi show EPON_ONU",'cat /etc/fwver.conf','cat
/etc/deviceParaStatic.conf','cat /etc/deviceParaStatic.conf'\
,'cat
/etc/deviceParaStatic.conf','cat /etc/deviceParaStatic.conf']
#测试项字典,前面的数字是为了和后面测试匹配结果字典进行正确的匹配。
TestItem =
{0:'ONU Type test',1:'ONU Vendor',2:'ONU Mode',3:'Hard
Version',4:'Kernel Version',5:'\
FE Port
Number',6:'Inner
Version',7:'Manufacturer',8:'CustomerSWVersion',9:'CustomerHWVersion',10:'Category'}
#匹配结果字典,匹配的信息个数必须与上面测试项字段一一对应,个数需与命令列表的元素个数一致。
correc =
{0:'Type=SFU',1:'VendorID=ARGM',2:'Model=EPON',3:'HWVer=v1.0',4:'SWVer=TCLinux_2.6.30',5:'FEPortNum=4'\
,6:'7.3.207.50_v003',7:'Manufacturer=RL',8:'CustomerSWVersion=V1.0.10963'\
,9:'CustomerHWVersion=V20',10:'Category=HGW'}
#从定向输入到标准错误输出
>> sys.stderr
log2 =
open(fileName + '.txt','a')
>>
log2,'====================================================================='
#以测试命令列表为循环或者叫遍历的基础,执行其中的每条命令,每次执行命令都是登录执行,返回执行结果,退出设备。
for cmd in
cmds:
result = telnetdo("192.168.1.1","admin","1234",'%s' %cmd)
jg = result.find(correc[i]) #从返回的信息中匹配预定义的正确结果。
if jg == -1
: print result
print >> log2 , result
print >> log2 , '********** ' + TestItem[i]
+ ' fail !!!' + ' **********'
fstr = '*'*10 +TestItem[i] + ' fail !!!' +
'*'*10
cls = tchcolor.Color()
cls.print_blue_text_with_red_bg(fstr)
flag = False
print >> log2 , ''
print >> log2 , '*'*10 + ' The ONU Test Result Is Fail '
+'*'*10
cls = tchcolor.Color()
print '\n\n'
rfstr = '*'*10 + ' The ONU Test Result Is Fail ' +'*'*10
cls.print_red_text(rfstr)
sys.exit(1)
else:
print result
print >> log2 , result
print >> log2 , '********** ' + TestItem[i]
+ ' Success !!!' + ' **********'
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。