A-A+
使用SecureCRT批处理备份所有交换机路由器配置脚本
测试了SecureCRT脚本批量执行备份cisco交换机或者路由器配置文件的功能。测试通过(成功批量备份28台交换机,时间小于1分钟)。
此脚本可以根据你的需要修改,改成其他功能,希望有需要的同学扩展思路。
使用SecureCRT对所有交换机路由器批处理执行WR命令的脚本
使用方法:
1、 在D盘新建一个文件夹,命名为SWbackup,打开文件夹,新建list.txt,编辑这个文本文件,每行输入3列分别是:交换机ip 密码 enable密码;
例如:192.168.1.1 cisco cisco(有多少交换机就写多少行)
2、将下载回来解压后的 SecureCRT对所有交换机路由器批处理执行WR命令的脚本.vbs复制到D盘SWbackup文件夹内;
3、在D盘SWbackup文件夹中新建一个log文件夹,用于保存配置文件。然后再新建一个以日期为名字的文件夹用于区别多个备份。目录结构例如:d:\SWbackup\log\20110810\
4、打开SecureCRT,点击菜单栏的 脚本-执行,选择下载回来解压后的 备份所有交换机配置批处理脚本.vbs,点执行。
脚本中的目录、文件名、命令,大家可以自己改啊,想偷懒就自己研究一下。很简单的。
更改方法:右键点击 备份所有交换机配置批处理脚本.vbs,点 编辑。
脚本内容:
- =============================================================================================
- # $language = "VBScript"
- # $interface = "1.0"
- '本脚本示范:从一个文件里面自动读取设备IP地址,密码等,自动将设备配置备份
- Sub Main
- '打开保存设备管理地址以及密码的文件
- Const ForReading = 1, ForWriting = 2, ForAppending = 8
- Dim fso,file1,line,str1,params
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set file1 = fso.OpenTextFile("d:\SWbackup\list.txt",Forreading, False)
- crt.Screen.Synchronous = True
- DO While file1.AtEndOfStream <> True
- '读出每行
- line = file1.ReadLine
- '分离每行的参数 IP地址 密码 En密码
- params = Split (line)
- crt.session.LogFileName = "d:\SWbackup\log\20120331\" & params(0) & ".txt"
- crt.session.Log(true)
- 'Telnet到这个设备上
- crt.Session.Connect "/TELNET " & params(0)
- '输入telnet密码
- crt.Screen.WaitForString "Password:"
- crt.Screen.Send params(1) & vbcr
- '进特权模式
- crt.Screen.Send "enable" & vbcr
- crt.Screen.WaitForString "Password:"
- crt.Screen.Send params(2) & vbcr
- crt.Screen.waitForString "#"
- '备份目前runing-config配置
- str1 = "show run"
- crt.Screen.Send str1 & vbcr
- crt.Screen.WaitForString " --More-- "
- crt.Screen.Send " " & vbcr
- '备份完成后退出
- crt.Screen.waitForString "!" & vbcrlf & "end"
- crt.Session.Disconnect
- loop
- crt.Screen.Synchronous = False
- End Sub
- 'list.txt需要先做好。每行3列分别是:交换机ip 密码 enable密码。例如:192.168.1.1 cisco cisco,有多少交换机就写多少行
有cisco交换机配置中末尾部分不是: ! end 。这样的话脚本执行会出现报错。只要把
'备份完成后退出
- crt.Screen.waitForString "!" & vbcrlf & "end"
改为crt.Screen.waitForString "end" ,就可以顺利执行了。