背景
在给交换机做配置变更或者日常检查过程中,经常会遇到需要大批量的修改或查看交换机命令的情况。
如果工程师一台台登陆交换机进行配置修改或检查,效率太低。
常用的CRT软件SecureCRT的脚本功能就可以做到批量配置或检查,SecureCRT提供了强大的脚本工具,我们可以编写vbs、js、pl、py脚本文件来实现我们的需求。
我这里介绍了使用SecureCRT通过vbs脚本批量备份cisco交换机配置的方法,实测可用。
此脚本可以根据你的需要修改,改成其他功能。
使用方法
1. 在D盘新建一个文件夹,命名为SW_Scripts,打开文件夹,新建list.txt,编辑文本文件,每行输入4列分别是:交换机ip 用户名 密码 enable密码
例:
192.168.1.100 user123 pwd123456 cisco123
192.168.1.101 user123 pwd123456 cisco123
……
有多少交换机就写多少行
2.新建backup.txt,编辑文本文件,将下文的交换机批量备份配置脚本内容复制到文本文件中,脚本中的目录、文件名、命令根据自己需求进行自定义修改,保存退出。将backup.txt更改为backup.vbs,确定。
3.在D盘SW_Scripts文件夹内新建一个log文件夹,用于记录操作过程。
4.打开SecureCRT,点击菜单栏的 脚本→执行,选择backup.vbs,执行。
5.查看log信息,检查备份文件。
脚本范例
交换机批量备份配置脚本:
# $language = "VBScript" # $interface = "1.0" Sub Main Const ForReading = 1, ForWriting = 2, ForAppending = 8 Dim fso,file1,line,str1,str2,params Set fso = CreateObject("Scripting.FileSystemObject") '设备列表和密码文件路径,运行前需要确认路径! Set file = fso.OpenTextFile("D:\SW_Scripts\list.txt",Forreading, False) crt.Screen.Synchronous = True DO While file.AtEndOfStream <> True line = file.ReadLine params = Split (line) '输出log文件路径,运行前需要确认log文件夹存在! crt.session.LogFileName = "D:\SW_Scripts\log\" & params(0) & " @"& Year(Now) &"-"& Month(Now) &"-"& Day(Now) &".txt" crt.session.Log(true) '登录 crt.Session.Connect "/TELNET " & params(0) crt.Screen.WaitForString "Username:" crt.Screen.Send params(1) & vbcr crt.Screen.WaitForString "Password:" crt.Screen.Send params(2) & vbcr crt.Screen.waitForString ">" str0 = "enable" crt.Screen.Send str0 & vbcr crt.Screen.WaitForString "Password:" crt.Screen.Send params(3) & vbcr crt.Screen.waitForString "#" '备份目前startup配置到tftp服务器 str1 = "copy startup-config tftp://192.168.1.111" str2 = params(0) & "-config" & "@" & Year(Now) &"-"& Month(Now) &"-"& Day(Now) & ".cfg" crt.Screen.Send str1 & vbcr crt.Screen.WaitForString "]?" crt.Screen.Send vbcr crt.Screen.WaitForString "]?" crt.Screen.Send str2 & vbcr crt.Screen.WaitForString "#" '登出 crt.Session.Disconnect loop crt.Screen.Synchronous = False End Sub
注意事项
1.脚本先用测试交换机测试运行正常后方可批量执行。
2.建议分多个list.txt文件分批执行,不要一次性执行完所有设备。
3.根据交换机ios版本不同,部分waitForString可能不一样,比如登录步骤中,大部分交换机waitForString是Username:,但是也有的是username:,因此会造成脚本执行中断,需根据实际情况自行修改。
4.对于做AAA认证的交换机,有的可能没有enable密码,登录后跳过了>,直接进入了#,因此waitForString也需对应修改。
如果在使用过程中出现报错或者其它问题,欢迎留言,我会尽量帮忙解决。