提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
SecureCRT软件运行的vbs脚本:根据条件判断自动重启设备,并记录挂机测试结果,记录日志。
一、常见问题与解决办法
'记录如下:
'1.编辑工具是Notepad++,写完代码之后保存为.vbs的后缀即可。但是运行的时候却报未结束的字符串常量”的错误。
'将默认的字符编码UTF-8修改为 ANSI编码 即可
'2.crt.Screen.Synchronous 设置为执行同步时,会大概率使CRT卡顿(已知BUG)
'设置False即可
'3.文件操作set f=fso.opentextfile(“d:\a.txt”,2,true) :f.write “写入内容” :f.close
'4.连接串口时会出错RPCv2 client: connect be refused RPCv2 client: cleanup
'开启会话选项:勾选发送协议NO-OP
'5.向当前窗口发送按键,包含组合按键crt.Screen.SendKeys(“参数”)
'可借鉴:https://www.cnblogs.com/OnOwnRoad/p/4963969.html
'6.在脚本中使用WaitForString、WaitForStrings或ReadString函数时,可能存在CRT终端丢失一部分数据的现象,即不能及时显示(已知BUG)
'尽量不用WaitForString等,调好流程,直接发送命令即可
’7.若需要记录SecureCRT打印内容的日志,可在该软件设置日志文件输出。
'[%Y_%M:%D_%h:%m:%s]表示:在日志文件的每行打印出时间戳
二、源代码
代码如下(示例):
#$language = "VBScript"
#$interface = "1.0"
crt.Screen.Synchronous = False
' This automatically generated script may need to be
' edited in order to work correctly.
dim str,result,Currentdate,CurrentTime,i,timestr
dim fso,testfile
set fso = createobject("scripting.filesystemobject") '指明一个对象
set testfile = fso.createtextfile("C:\Users\Administrator\Desktop\xshell\LOG\vbstxt\reboot_log.txt",true) '指明创建目录和文件类型
str=" test result: "
result="OK!"
i=1000
const strif1= "7 100fdx 100fdx 100FX"
const strif2= "9 100fdx 100fdx 100FX"
Sub Main
do until i=0
crt.Session.Disconnect
'crt.Session.Connect("/SERIAL COM3") //也可使用串口建立连接
crt.Session.Connect("/TELNET 10.11.13.98")
crt.Screen.Synchronous = False
crt.Sleep 1000
crt.Screen.Send chr(13)
crt.Screen.WaitForString "Username:"
crt.Screen.Send chr(13)
crt.Screen.Send "guest" & chr(13)
crt.Screen.WaitForString "Password:"
crt.Sleep 1000
crt.Screen.Send chr(13)
crt.Screen.Send "sys" & chr(13)
crt.Screen.Send "_bcm" & chr(13)
crt.Screen.WaitForString "BCM.0>"
crt.Screen.Send "port mode" & chr(13)
Currentdate=date()
CurrentTime=Hour(Now)&":"&Minute(Now)&":"&Second(Now)
timestr = " time:" & Currentdate & " " & CurrentTime
If (crt.Screen.WaitForString (strif1,3)<>True) and (crt.Screen.WaitForString (strif1,3)<>True) Then '3:表示等待超时时间为3s
result="ERRON!"
Exit Do
end if
result="OK"
'crt.Screen.WaitForString "BCM.0>"
crt.Screen.Send "exit"
crt.Screen.SendKeys("{ENTER}")
crt.Sleep 1000
'crt.Screen.WaitForString "]"
crt.Screen.Send "quit"
crt.Screen.SendKeys("{ENTER}")
crt.Sleep 1000
'crt.Screen.WaitForString "<PT_504iAD>"
crt.Screen.Send "dis switchover state" & chr(13)
crt.Sleep 3000
crt.Screen.Send "reboot"
crt.Screen.SendKeys("{ENTER}")
crt.Sleep 3000
crt.Screen.Send "y"
crt.Screen.SendKeys("{ENTER}")
crt.Sleep 3000
crt.Screen.Send "y"
crt.Screen.SendKeys("{ENTER}")
crt.Sleep 1000
crt.Session.Disconnect
i = i - 1
testfile.writeline("Number of restarts: "&(1000-i)& str & result & timestr & chr(13))
crt.Sleep 166000
loop
testfile.writeline("Number of restarts: "&(1000-i)& str & result & timestr & chr(13))
testfile.close
crt.Screen.Synchronous = False
msgbox (result & chr(13) & "reboot:" & (1000-i) & chr(13) & "time:" & Currentdate & " " & CurrentTime)
End Sub