1、腳本介紹網絡
1.本文的自動配置備份腳本是經過BAT腳本自動運行CRT-登陸交換機-查看當前配置-記錄會話-保存會話的方式實現的。session
2.本方法須要把如下4個文件要放置在同一目錄下:ide
(1)配置備份.bat 主要實現統計備份先後文件數量,運行CRToop
(2)配置備份.vbs 此腳本實現CRT自動登陸交換機,並查看配置記錄會話測試
(3)SWIP.txt 記錄交換機IPspa
(4)swbackup.log 備份日誌,備份完成狀況會記錄到此文件中日誌
2、配置備份.bat腳本blog
1.命令窗口標題進程
設置命令窗口名稱顯示爲「配置備份程序」ip
@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= 正在備份,請稍候<nul
set /a a=1
:a
set /a a+=1
set /p=.<nul
::for %%a in ( ">") do (set /p=%%a<nul &ping-n 2 127.1>nul)
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
3、配置備份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
4、設備IP列表SWIP.txt
裏面有要備份配置的設備類型、名稱、IP、用戶名、密碼,以下
示例
類型 名稱 IP 用戶名 密碼
juniper 9F-01 10.10.1.1 admin admin123
h3c 9F-02 10.10.1.2 admin admin123
5、swbackup.log備份日誌文件
從「配置備份.bat 」裏產生的備份記錄會重定向輸出到此文件中
結果以下:
============================================
備份開始時間: 2017-9-01 01:14:20
備份完成時間: 2017-9-01 01:14:28
設 備 數 量: 40
當前備份數量: 40
備 份 目 錄: E:\配置備份\2017-9-01
============================================
6、「配置備份.bat 」執行結果展現