一、脚本介绍

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=%%anul) 

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,并开始备份配置(这里主要进行三种设备备份:H3CJuniperCisco

 

             '首先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 ”执行结果展示

交换机配置备份脚本_第1张图片