<返回更多

SecureCRT脚本实现自动化交换机巡检

2022-10-13  今日头条  呆萌小可萘日常
加入收藏

SecureCRT对于每一位网工来说并不陌生,相信每个网工的电脑上肯定都装着这款软件。以前刚开始玩的时候觉得就是普通的仿真终端程序而已,其实它软件还有更加强大的脚本功能,SecureCRT可以支持VBScript、JAVAscript、Python/ target=_blank class=infotextkey>Python脚本语言等等。通过脚本我可以来拓展更多丰富的功能,比如可以通过脚本实现自动化的命令执行。

刚巧社区里面的小伙伴最近在做一个大项目,有上百台交换机配置需要收集。刚好最近有研究,于是就搞起来了。 今天我们来说说如何使用SecureCRT制作一个自动化批量巡检交换机的脚本,这里我们用VBScript脚本语言来制作,官方对这个支持的也挺好的,还有帮助文档,而且网上关于用VBScript编写CRT脚本的教程也很多,遇到问题还可以百度下。通过脚本自动化的执行提升工作效率,在也不用自己来搬砖了。

制作脚本;

这里我们以cisco交换机为例子,讲解下没段代码的含义,然后您可以根据附件提供的代码根据下面的教程自己进行修改脚本,适应自己的环境。脚本适用于可以通过CRT登陆设备,比如华三、华为交换机或在linux操作系统。

1、首先我们需要让脚本来自动帮我们登录交换机并进入到enable模式,请看下面的脚本:

crt.Screen.WaitForString ("Username:") ‘等待字符串Username出现,区分大小写

crt.screen.Send("cisco")&chr(13) ‘发送字符串cisco并回车

crt.Screen.WaitForString "Password: "

crt.Screen.Send "cisco" & chr(13)

crt.Screen.WaitForString ">"

crt.Screen.Send "en" & chr(13)

crt.Screen.WaitForString "Password: "

crt.Screen.Send "cisco" & chr(13)

注:设备的账号密码可以在上面的脚本中修改发送的字符串即可

2、通常我们都会在crt界面点击记录会话日志,这里我们就不需要手动,用脚本就解决了。

crt.session.LogFileName="192.168.1.1.log" ‘设置记录的日志文件名称

crt.session.Log(true) ‘开始记录日志

3、通常需要我们来手敲的命令,用下面的脚本就可以让crt自己敲起来了。

crt.Screen.Send "show clock" & chr(13)

crt.Screen.WaitForString "#"

crt.Screen.Send "show running-config" & chr(13)

nextmore ‘调用自定义函数

crt.Screen.Send "show version" & chr(13)

nextmore ‘调用自定义函数

那么如果想加入其它命令怎么办呢?直接在这块脚本上附加上下面的代码即可。

crt.Screen.Send "show vlan" & chr(13)

crt.Screen.WaitForString "#"

如果输出内容较多会出现more,只要稍作修改,调用我们自定义的函数即可。

crt.Screen.Send "show vlan" & chr(13)

nextmore

4、我们知道当crt界面不能输出所有信息的时候,就会出现“—more—”的字符串,这个时候需要手动执行空格或者回车查看更多的内容,但是因为设备的不通需要执行的空格数量又不确定,于是我们这里就编写一个循环语句,当遇到More字符串出现的时候就自动发送空格。由于很多命令都会出现类似的情况,于是我们可以将整循环编写为一个函数,用于调用即可。以简化我们的代码。

编写函数:

Function nextmore

do while ( crt.screen.waitforstring("--More--",3)=true)

crt.screen.Send(chr(32))

loop

End Function

脚本含义:当3秒内等等到字符串"--More--"的出现则执行下面的语句发送一个chr(32)(空格键的ASCII值),while判断条件成立执行,不成立则退出循环。

5、关闭日志记录,当然这个操作我们也可以自动化。

crt.screen.waitforstring("#")

crt.session.Log(false)

注:当等待到“#”出现,也就是命令都执行完毕后,停止日志记录。

6、登录下一台交换机执行上面操作,一台设备的所有操作都做完,下面我们要让这些脚本自动一台一台的去执行。这里我们就需要再次用到循环语句。

for i=1 to 254 ‘循环从1到254依次循环,i的值会自动递增

dim ip ‘创建变量ip

ip="192.168.1."&i ‘定义变量,作为IP地址,ip随着循环变化而变

crt.screen.Send("te.NET "&ip)&chr(13) ‘telnet登录交换机

'判断是否telnet成功,如果31秒内出现Username登录则执行下面语句

if(crt.Screen.WaitForString ("Username:",31)=true) then

'下面语句为条件成立后执行的语句内容

crt.session.LogFileName=ip&".log" ‘以IP地址作为日志的文件名

crt.session.Log(true)

。。。。

end if ‘if语句结束

next ‘和for循环对应,执行下一次循环

脚本知识

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脚本是没问题的。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>