一、脚本介绍
1.本文的自动配置备份脚本是通过BAT脚本自动运行CRT-登录交换机-查看当前配置-记录会话-保存会话的方式实现的。
2.本方法需要把以下4个文件要放置在同一目录下:
(1)配置备份.bat 主要实现统计备份前后文件数量,运行CRT
(2)配置备份.vbs 此脚本实现CRT自动登录交换机,并查看配置记录会话
(3)SWIP.txt 记录交换机IP
(4)swbackup.log 备份日志,备份完成情况会记录到此文件中
二、配置备份.bat脚本
1.命令窗口标题
设置命令窗口名称显示为“配置备份程序〞
echo off
color 0a
title 配置备份程序
1 / 18
2.修改日期格式
::调整时间格式为:14:00:00
set time1=%time:~0,8%
::调整日期格式为:2017-09-01
set y=%date:~0,4%
set m=%date:~5,2%
set d=%date:~8,2%
::调整日期格式,去除日期前面的0,结果为:2017-9-1〔这里只的我的个人需要〕
if %m% == 01 (set m=1)
if %m% == 02 (set m=2)
if %m% == 03 (set m=3)
if %m% == 04 (set m=4)
if %m% == 05 (set m=5)
2 / 18
if %m% == 06 (set m=6)
if %m% == 07 (set m=7)
if %m% == 08 (set m=8)
if %m% == 09 (set m=9)
if %d% == 01 (set d=1)
if %d% == 02 (set d=2)
if %d% == 03 (set d=3)
if %d% == 04 (set d=4)
if %d% == 05 (set d=5)
if %d% == 06 (set d=6)
if %d% == 07 (set d=7)
if %d% == 08 (set d=8)
if %d% == 09 (set d=9)
3 / 18
set date1=%y%-%m%-%d%
2.设置配置备份目录路径
配置我这里统一保存在E盘-配置备份-日期-目录下
set dir=E:\\配置备份\\%y%-%m%-%d%
3.自动计算需要备份的设备数量,即SWIP.txt文件的行数
set \"file=E:\\FANTAWILD\\配置备份脚本\\SWIP.txt\"
for /f \"delims=\" %%a in (%file%) do set/a rows+=1
4.命令窗口打印显示以下信息
echo.
echo ********************************************
echo 网络设备配置备份
echo ********************************************
echo 备份日期:%date1% %time1%
4 / 18
echo 设备数量:%rows%
echo 备份目录:%dir%
echo ********************************************
5.启动CRT软件,并执行配置备份.vbs脚本
start \"\" \"D:\\Program Files\\SecureCRT-7.0\\App\\VanDyke
Clients\\SecureCRT.exe\" /SCRIPT E:\\FANTAWILD\\配置备份脚本\\配置备份.vbs >nul
6.预计备份时间
:: 通过屡次测试,预计每台设备备份时间为2秒钟〔不同设备收集配置时间可能不一样〕总的时间就是2乘设备数量
set /a rows2=%rows%*2
echo 预计备份时间 %rows2% 秒
7.进度条,纯属为了界面动态美观〔可忽略〕
::echo 正在备份,请稍候
::进度条1
5 / 18
set /p= 正在备份,请稍候 :a set /a a+=1 set /p=. ping -n 2 127.1>nul if not %a%==%rows2% goto a 8.备份完成后,完毕CRT进程 taskkill /f /im SecureCRT.exe >nul echo. 9.统计配置文件数量,即备份完成后备份目录里的文件数量 set n=0 6 / 18 for /f \"delims=\" %%a in ('dir /a-d /b /s \"%dir%\" ') do ( set /a n+=1 ) 10.指定备份完成时时间 set time2=%time:~0,8% 11.命令窗口显示 echo ******************************************** echo 备份完成,共 %rows% 台设备,已完成 %n% 台设备 echo 备份完成 %date1% %time2% echo ******************************************** echo. 12.为了方便查看备份记录,将此次的备份情况另外输出到日志文件 echo.>>swbackup.log 7 / 18 echo.>>swbackup.log echo ============================================>>swbackup.log echo 备份开始%date1% %time1%>>swbackup.log echo 备份完成%date1% %time2%>>swbackup.log echo 设 备 数 量:%rows% >>swbackup.log echo 当前备份数量:%n% >>swbackup.log echo 备 份 目 录:%dir%>>swbackup.log echo ============================================>>swbackup.log 13.BAT配置备份完毕 pause 三、配置备份vbs脚本 8 / 18 此脚本是在CRT中使用的,实现CRT自动登录交换机,并收集记录配置信息 1.根本配置 # $language = \"VBScript\" # $interface = \"1.0\" 2.从一个文件里面自动读取设备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(\"E: \\配置备份脚本\\SWIP.txt\ crt.Screen.Synchronous = True dtmNowDate = Now() 9 / 18 dtmNowDate = Year(dtmNowDate) & \"-\" & Month(dtmNowDate) & \"-\" & Day(dtmNowDate) DO While file1.AtEndOfStream <> True '读出每行 line = file1.ReadLine '别离每行的参数设备名称、IP地址、用户名、密码,然后创建设备名称为名的txt文本,作为配置记录文件 params = Split(line) crt.session.LogFileName = \"E:\\配置备份\\\" & dtmNowDate & \"\\\"& params(1) &\".txt\" call crt.session.Log(False) call crt.session.Log(True)'开启日志 crt.Screen.Synchronous = True'开启屏幕同步 2.判断设备类型H3C,并开始备份配置〔这里主要进展三种设备备份:H3C、Juniper、Cisco〕 10 / 18 '首先Telnet到这个设备上,params(2)为文件中提取的设备IP crt.Session.Connect \"/TELNET \" & params(2) 'H3C设备的配置备份 If params(0) = \"h3c\" Then '自动输入telnet用户名 crt.Screen.WaitForString \"Username:\" crt.Screen.Send params(3) & vbcr '自动输入telnet密码 crt.Screen.WaitForString \"Password:\" crt.Screen.Send params(4) & vbcr '收集设备运行信息 str1 = \"display environment\" crt.Screen.Send str1 & vbcr 11 / 18 '收集版本信息 str2 = \"display version\" crt.Screen.Send str2 & vbcr '备份h3c配置 str3 = \"dis cu\" crt.Screen.Send str3 & vbcr crt.Screen.WaitForString \"More\" crt.Screen.Send \" '备份完成后退出 crt.Screen.waitForString \"return\" crt.Session.Disconnect() end if 2.判断设备类型Juniper,并开始备份配置 12 / 18 \" & vbcr If params(0) = \"juniper\" Then '自动输入telnet密码 crt.Screen.WaitForString \"login:\" crt.Screen.Send params(3) & vbcr '自动输入telnet密码 crt.Screen.WaitForString \"Password:\" crt.Screen.Send params(4) & vbcr '收集设备运行信息 str1 = \"show chassis environment\" crt.Screen.Send str1 & vbcr '收集版本信息 str2 = \"show version\" crt.Screen.Send str2 & vbcr 13 / 18 '备份juniper配置 str3 = \"show configuration | display set\" crt.Screen.Send str3 & vbcr crt.Screen.WaitForString \"more\" crt.Screen.Send \" \" & vbcr '备份完成后退出 crt.Screen.waitForString \">\" crt.Session.Disconnect() end if 3.判断设备类型Cisco,并开始备份配置 'Cisco设备的配置备份 If params(0) = \"cisco\" Then '输入telnet用户名 14 / 18 crt.Screen.WaitForString \"Username:\" crt.Screen.Send params(3) & vbcr '输入telnet密码 crt.Screen.WaitForString \"Password:\" crt.Screen.Send params(4) & vbcr '备份juniper配置 str1 = \"show run\" crt.Screen.Send str1 & vbcr 'crt.Screen.WaitForString \"more\" crt.Screen.Send \" \" & vbcr '备份完成后退出 crt.Screen.waitForString \"end\" crt.Session.Disconnect() 15 / 18 end if loop Call crt.Session.Log(False) crt.Screen.Synchronous = False End Sub 四、设备IP列表SWIP.txt 里面有要备份配置的设备类型、名称、IP、用户名、密码,如下 示例 类型名称 IP用户名密码 juniper 9F-01 10.10.1.1 admin admin123 h3c 9F-02 10.10.1.2 admin admin123 五、swbackup.log备份日志文件 从“配置备份.bat 〞里产生的备份记录会重定向输出到此文件中 16 / 18 结果如下: ============================================ 备份开始 2017-9-01 01:14:20 备份完成 2017-9-01 01:14:28 设 备 数 量: 40 当前备份数量: 40 备 份 目 录: E:\\配置备份\\2017-9-01 ============================================ 六、“配置备份.bat 〞执行结果展示 17 / 18 18 / 18 因篇幅问题不能全部显示,请点此查看更多更全内容