引言
在测试网络设备中,通常使用脚本对设备端进行配置和测试以及维护;对于PE设备的测试维护人员来说使用较多是SecureCRT工具;SecureCRT支持VB、JavaScript、Python等多种脚本语言,为了实现脚本在CRT中更加丰富稳定地执行,掌握CRT的常用函数是非常有用的。接下来的时间我将对SecureCRT脚本编写的常用函数展开学习应用。
(1)使用python语言实现SecureCRT中的Dialog功能
filePath
= crt
.Dialog
.FileOpenDialog
("please open a file","open","a.log","(*.log)|*.log")
crt
.Dialog
.MessageBox
(filePath
,"",64|0)
crt
.Dialog
.MessageBox
("会话已断开","session",64|2)
crt
.Dialog
.MessageBox
("确认是否退出","session",32|1)
crt
.Dialog
.MessageBox
("确认是否退出","session",32|3)
crt
.Dialog
.MessageBox
("是否继续安装","session",32|4)
crt
.Dialog
.MessageBox
("此会话已打开","session",48|5)
crt
.Dialog
.MessageBox
("无法连接此窗口","session",16|6)
password
= crt
.Dialog
.Prompt
("password","session","admin",False)
crt
.Dialog
.MessageBox
(password
,"password",64|0)
password
= crt
.Dialog
.Prompt
("password","session","",True)
crt
.Dialog
.MessageBox
(password
,"password",64|0)
注释 上述实现中讲述了Dialog对象的3种方法:FileOpenDialog、MessageBox以及Prompt;包括每种方法的python语法以及举例应用;这里我只是起到抛砖引玉的作用,感兴趣的博友们可以自己使用python语言在SecureCRT中调试此功能,一定会有更多的收获。
(2)使用python语言实现SecureCRT中的Screen功能
curCol
= crt
.Screen
.CurrentColumn
crt
.Dialog
.MessageBox
(str(curCol
))
curRow
= crt
.Screen
.CurrentRow
crt
.Dialog
.MessageBox
(str(curRow
))
cols
= crt
.Screen
.Columns
crt
.Dialog
.MessageBox
(str(cols
))
rows
= crt
.Screen
.Rows
crt
.Dialog
.MessageBox
(str(rows
))
crt
.Screen
.IgnoreEscape
= False
crt
.Dialog
.MessageBox
(crt
.Screen
.ReadString
(["\03"],5))
crt
.Screen
.IgnoreEscape
= True
crt
.Dialog
.MessageBox
(crt
.Screen
.ReadString
(["\03"],2))
outPut
= crt
.Screen
.ReadString
(["error","warning","#"],10)
index
= crt
.Screen
.MatchIndex
if (index
== 0):
crt
.Dialog
.MessageBox
("Timed out!")
elif (index
== 1):
crt
.Dialog
.MessageBox
("Found 'error'")
elif (index
== 2):
crt
.Dialog
.MessageBox
("Found 'warning'")
elif (index
== 3):
crt
.Dialog
.MessageBox
("Found '#'")
crt
.Screen
.Synchronous
= True
crt
.Screen
.Send
("\r\n")
crt
.Screen
.ReadString
("#")
crt
.Screen
.Send
("\r\n")
crt
.Screen
.WaitForString
("#")
crt
.Screen
.Send
("\r\n")
crt
.Screen
.WaitForStrings
(["#",">"])
crt
.Screen
.Send
("conf t\r\n")
out
= crt
.Screen
.Get
(row1
, col1
, row2
, col2
)
crt
.Dialog
.MessageBox
(out
)
crt
.Screen
.Get2
(row1
, col1
, row2
, col2
)
crt
.Screen
.IgnoreCase
= True
crt
.Screen
.Send
("show memory\r\n")
crt
.Screen
.WaitForString
("more")
crt
.Screen
.Send
("\r\n")
crt
.Screen
.WaitForStrings
("more","#")
crt
.Screen
.Send
("\r\n")
crt
.Screen
.ReadString
("more","#")
crt
.Screen
.Send
("show version\r\n")
crt
.Screen
.Send
("\r\nhello,world!\r\n",True)
crt
.Screen
.IgnoreCase
= True
while (crt
.Screen
.WaitForString
("more",10)):
crt
.Screen
.Send
("\r\n")
crt
.Screen
.SendSpecial
("vT_HOLD_SCREEN")
crt
.Screen
.WaitForCursor
(5)
crt
.Screen
.Send
("\r\nhello,world!\r\n",True)
if ( crt
.Screen
.WaitForCursor
(5)):
crt
.Screen
.Send
("show version\r\n")
if (crt
.Screen
.WaitForKey
(5)):
crt
.Screen
.Send
("show version\r\n")
crt
.Screen
.WaitForString
("#",10)
outPut
= crt
.Screen
.WaitForStrings
(["error","warning","#"],10)
index
= crt
.Screen
.MatchIndex
if (index
== 0):
crt
.Dialog
.MessageBox
("Timed out!")
elif (index
== 1):
crt
.Dialog
.MessageBox
("Found 'error'")
elif (index
== 2):
crt
.Dialog
.MessageBox
("Found 'warning'")
elif (index
== 3):
crt
.Dialog
.MessageBox
("Found '#'")
crt
.Screen
.ReadString
([string1
,string2
..],[timeout
],[bCaseInsensitive
])
全文注释 1、string,必选参数,等待的字符串,最少有一个,可以是特殊字符比如:\r\n; 2、timeout,可选参数,超时时间,当检测不到对应字符串时会返回false,没有此参数时会一直等待; 3、bCaseInsensitive,可选参数,大小写不敏感,默认值是false,表示将检测字符串的大小写,当为true时不检测大小写。