本帖最后由 北回归线 于 2017-7-4 17:34 编辑
作者来自社区编辑部
一、说点啥 SecureCRT对于每一位网工来说并不陌生,相信每个网工的电脑上肯定都装着这款软件。以前刚开始玩的时候觉得就是普通的仿真终端程序而已,其实它软件还有更加强大的脚本功能,SecureCRT可以支持VBScript、javascript、python脚本语言等等。通过脚本我可以来拓展更多丰富的功能,比如可以通过脚本实现自动化的命令执行。 刚巧社区里面的小伙伴最近在做一个大项目,有上百台交换机配置需要收集。刚好最近有研究,于是就搞起来了。 今天我们来说说如何使用SecureCRT制作一个自动化批量巡检交换机的脚本,这里我们用VBScript脚本语言来制作,官方对这个支持的也挺好的,还有帮助文档,而且网上关于用VBScript编写CRT脚本的教程也很多,遇到问题还可以百度下。通过脚本自动化的执行提升工作效率,在也不用自己来搬砖了。
二、制作脚本; 这里我们以cisco交换机为例子,讲解下没段代码的含义,然后您可以根据附件提供的代码根据下面的教程自己进行修改脚本,适应自己的环境。脚本适用于可以通过CRT登陆设备,比如华三、华为交换机或在linux操作系统。 1、首先我们需要让脚本来自动帮我们登录交换机并进入到enable模式,请看下面的脚本:
<注:设备的账号密码可以在上面的脚本中修改发送的字符串即可
2、通常我们都会在crt界面点击记录会话日志,这里我们就不需要手动,用脚本就解决了。 <3、通常需要我们来手敲的命令,用下面的脚本就可以让crt自己敲起来了。 <那么如果想加入其它命令怎么办呢?直接在这块脚本上附加上下面的代码即可。<如果输出内容较多会出现more,只要稍作修改,调用我们自定义的函数即可。 <
4、我们知道当crt界面不能输出所有信息的时候,就会出现“—more—”的字符串,这个时候需要手动执行空格或者回车查看更多的内容,但是因为设备的不通需要执行的空格数量又不确定,于是我们这里就编写一个循环语句,当遇到More字符串出现的时候就自动发送空格。由于很多命令都会出现类似的情况,于是我们可以将整循环编写为一个函数,用于调用即可。以简化我们的代码。 编写函数: <
脚本含义:当3秒内等等到字符串"--More--"的出现则执行下面的语句发送一个chr(32)(空格键的ASCII值),while判断条件成立执行,不成立则退出循环。 5、关闭日志记录,当然这个操作我们也可以自动化。 <
注:当等待到“#”出现,也就是命令都执行完毕后,停止日志记录。
6、登录下一台交换机执行上面操作,一台设备的所有操作都做完,下面我们要让这些脚本自动一台一台的去执行。这里我们就需要再次用到循环语句。 <
完整脚本下载:结合脚本中的注释自行修改脚本满足自己环境需求。
三、脚本知识
crt.Screen.Send 发送一个字符串 crt.Screen.WaitForString 等待字符串出现,如果匹配到字符串后执行下面的操作 chr(13) 这是回车键的ASCII码值 chr(32) 这是空格键的ASCII码值 & VBScript里面的连接字符串连接符 ' 注释行符号,在文本前打上英文的单引号后,表示此行语句不被执行 Do...Loop 语句 运行循环,当条件为 true 或者直到条件为 true 时。 Do while(判断条件) 执行语句 Loop For...Next 语句 运行一段语句指定的次数 For i=1 to 254 执行语句 Next IF语句 假如你希望在条件为 true 时执行一系列的代码,可以使用这个语句。 If (判断条件) then 执行语句 End if
如果还有不明白的地方可以跟帖回复,或者百度下去学习下VBScript脚本语言,脚本语言比较简单,短时间可以学会基础,有基础了搞个crt脚本是没问题的。
|