上回小菜学会了SecureCRT软件的录屏和回放功能,于是有了如下对话。
小菜:每天都需要重复输入N条命令,现在一个回放脚本就搞定了,爽歪歪~
大鸟:如果要重复操作10次呢?
小菜:这还不简单,那就回放10次咯。
大鸟:10次还好。运营商工程现场往往有几十上百台设备,每台设备都操作10次,那工作量也不小。。。
小菜:这单靠回放功能,还真是有点麻烦。如果能像其他语言那样,加个for循环就好了。
大鸟:儒鸟可教也(程大神原话)~果然是聪明。这样的话,一台设备只需要回放运行一次脚本就行了。
一 操作任务:
使用date命令查看系统当前时间,重复10次。要求在SecureCRT上操作一次就实现。
二 实现过程:
选择“Script”-"Start Recording Script“,启动录屏操作。
在连接上的shell界面,手动输入date命令并回车。得到如下图所示。
选择“Script”-"Stop Recording Script“,结束录屏操作,并保存刚才的录屏脚本,命名为“1-录制.vbs”后保存。
编译“1-录制.vbs”文件。使用txt或notepad++等文本编辑工具打开后,可以看到录制的代码。
在发送和等待的程序上加一个For Next循环,设定运行次数为10次。命名为“2-循环.vbs”后保存。
程序中的单引号表示注释,与C语言中的//作用相同。
#$language = "VBScript"
#$interface = "1.0"
crt.Screen.Synchronous = True
' This automatically generated script may need to be
' edited in order to work correctly.
Sub Main
For i = 1 To 10 '循环10次
crt.Screen.Send "#Time-" & i & chr(13) '计数'
crt.Screen.WaitForString "]# "
crt.Screen.Send "date" & chr(13)
crt.Screen.WaitForString "]# "
Next
crt.Screen.Send "#End" & chr(13)
crt.Screen.WaitForString "]# "
End Sub
三 重复回放:
通过“Script”-"run...“,选择“2-循环.vbs”文件,点击确定后就开始自动运行了。
运行10次后,程序结束。这次是不是操作更方便了?
四 SecureCRT录屏功能引申
小菜:For..Next不是Vbs语言的命令吗?怎么SecureCRT软件也支持?
大鸟:眼光很独特,赞一个~SecureCRT软件录屏生成的脚本其实正是VBS语言,这从生成的文件后缀就可以看出来。
小菜:那我熟悉VBS语法后,岂不是可以对录屏生成的脚本进行改造?
大鸟:正是。在录制后的VBS文件中,SecureCRT对常见的VBS变量操作、文件操作等语法是完全支持的。我们可以在文件中加入算法实现,让录制后的VBS文件实现我们设想的功能。
小菜:SecureCRT的功能还真是强大。。。
大鸟:这话说得。。(故意咳嗽3声),人家好歹是商业软件。此外,SecureCRT还在VBS语言的基础上,封装了一系列的类库,如上文中的crt.Screen.Send()/crt.Screen.WaitForString()。我们手工写VBS脚本调用SecureCRT的功能也很方便的。掌握这一点很重要。在后面的介绍中,我们正是利用了这一点,使用SecureCRT完全为我们改造所用。
小菜:又来这大一段的说教,(故意打个呵欠)我都要睡着了。等下次用到的时候我再来学吧。。
大鸟:书到用时方恨少,咋能老临阵磨枪呢。。喂喂喂,你跑这么快做啥呢~