交換機配置備份腳本

一、腳本介紹

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:\FANTAWILD\配置備份腳本\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:\FANTAWILD\配置備份腳本\配置備份.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

 

 

 

三、配置備份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 Whilefile1.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 ”執行結果展示

wKioL1m6GGfBA4ehAABESPD7LA4321.png

                                        

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章