一、脚本介绍
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 配置备份程序
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)
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)
set date1=%y%-%m%-%d%
2.设置配置备份目录路径
配置我这里统一保存在E盘-配置备份-日期-目录下
set dir=E:\配置备份\%y%-%m%-%d%
3.自动计算需要备份的设备数量,即SWIP.txt文件的行数
set "file=E:\配置备份脚本\SWIP.txt"
for /f "delims=" %%a in (%file%) do set/a rows+=1
4.命令窗口打印显示以下信息
echo.
echo ********************************************
echo 网络设备配置备份
echo ********************************************
echo 备份日期:%date1% %time1%
echo 设备数量:%rows%
echo 备份目录:%dir%
echo ********************************************
5.启动CRT软件,并执行配置备份.vbs脚本
start "" "D:\ProgramFiles\SecureCRT-7.0\App\VanDyke Clients\SecureCRT.exe" /SCRIPTE:\配置备份脚本\配置备份.vbs >nul
6.预计备份时间
:: 通过多次测试,预计每台设备备份时间为2秒钟(不同设备收集配置时间可能不一样)总的时间就是2乘设备数量
set /a rows2=%rows%*2
echo 预计备份时间 %rows2% 秒
7.进度条,纯属为了界面动态美观(可忽略)
::echo 正在备份,请稍候
::进度条1
set /p= 正在备份,请稍候
set /a a=1
:a
set /a a+=1
set /p=.
::for %%a in ( ">") do (set /p=%%a
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
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
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脚本
此脚本是在CRT中使用的,实现CRT自动登录交换机,并收集记录配置信息
1.基本配置
# $language = "VBScript"
# $interface = "1.0"
2.从一个文件里面自动读取设备IP地址,用户名,密码,并创建日志文件,为记录配置信息做准备
Sub Main
'打开保存设备管理地址以及密码的文件
Const ForReading = 1,ForWriting = 2, ForAppending = 8
Dimfso,file1,line,str1,params
Set fso =CreateObject("Scripting.FileSystemObject")
Set file1 =fso.OpenTextFile("E: \配置备份脚本\SWIP.txt",Forreading,False)
crt.Screen.Synchronous= True
dtmNowDate = Now()
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"
callcrt.session.Log(False)
call crt.session.Log(True) '开启日志
crt.Screen.Synchronous= True '开启屏幕同步
2.判断设备类型H3C,并开始备份配置(这里主要进行三种设备备份:H3C、Juniper、Cisco)
'首先Telnet到这个设备上,params(2)为文件中提取的设备IP
crt.Session.Connect"/TELNET " & params(2)
'H3C设备的配置备份
If params(0) ="h3c" Then
'自动输入telnet用户名
crt.Screen.WaitForString"Username:"
crt.Screen.Sendparams(3) & vbcr
'自动输入telnet密码
crt.Screen.WaitForString"Password:"
crt.Screen.Sendparams(4) & vbcr
'收集设备运行信息
str1 ="display environment"
crt.Screen.Sendstr1 & vbcr
'收集版本信息
str2 ="display version"
crt.Screen.Sendstr2 & vbcr
'备份h3c配置
str3 ="dis cu"
crt.Screen.Sendstr3 & vbcr
crt.Screen.WaitForString"More"
crt.Screen.Send " " & vbcr
'备份完成后退出
crt.Screen.waitForString"return"
crt.Session.Disconnect()
end if
2.判断设备类型Juniper,并开始备份配置
If params(0) ="juniper" Then
'自动输入telnet密码
crt.Screen.WaitForString"login:"
crt.Screen.Sendparams(3) & vbcr
'自动输入telnet密码
crt.Screen.WaitForString"Password:"
crt.Screen.Sendparams(4) & vbcr
'收集设备运行信息
str1 ="show chassis environment"
crt.Screen.Sendstr1 & vbcr
'收集版本信息
str2 ="show version"
crt.Screen.Sendstr2 & vbcr
'备份juniper配置
str3 ="show configuration | display set"
crt.Screen.Sendstr3 & 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用户名
crt.Screen.WaitForString"Username:"
crt.Screen.Sendparams(3) & vbcr
'输入telnet密码
crt.Screen.WaitForString"Password:"
crt.Screen.Sendparams(4) & vbcr
'备份juniper配置
str1 ="show run"
crt.Screen.Sendstr1 & vbcr
'crt.Screen.WaitForString"more"
crt.Screen.Send " "& vbcr
'备份完成后退出
crt.Screen.waitForString"end"
crt.Session.Disconnect()
end if
loop
Callcrt.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 ”里产生的备份记录会重定向输出到此文件中
结果如下:
============================================
备份开始时间: 2017-9-01 01:14:20
备份完成时间: 2017-9-01 01:14:28
设 备 数 量: 40
当前备份数量: 40
备 份 目 录: E:\配置备份\2017-9-01
============================================
六、“配置备份.bat ”执行结果展示