?

局域網交換機配置的自動備份方法研究

2024-01-03 05:01呂浩勇
蘇州市職業大學學報 2023年4期
關鍵詞:類庫配置文件網絡設備

胡 寅,呂浩勇

(黃岡師范學院 信息化建設辦公室,湖北 黃岡 438000)

對于網絡運維管理員來說,定期對局域網中的交換機配置進行備份非常必要,因為一旦交換機發生故障,備份的交換機配置將有助于快速恢復網絡運行。交換機配置的備份最早是使用手工備份,以華三(H3C)交換機為例,在交換機命令行下,其手工備份方式通常有三種[1]:第一種連接設備,執行display current-configuration命令,將回顯的信息復制到TXT文本文件中;第二種開啟交換機ftp服務,然后將配置文件復制到計算機;第三種是使用TFTP服務器的方式,這也是最常使用的方式。但手工備份僅適用于小型、交換機數量較少的網絡環境,對于設備數量較多的網絡環境,這種方式需要運維管理人員花費較長的時間,影響工作效率。在較大規模的網絡環境中,手工備份效率低下,可行性不高,如何快速、高效地對上百臺交換機的配置進行備份,是網絡運維人員迫切需要解決的問題[2-3]。

針對這一問題,以H3C交換機為例,分別提出利用Python語言提供的函數庫編寫交換機自動備份程序和使用H3C交換機自動備份功能兩種方法,可在需要備份時,快速完成局域網中交換機的批量自動備份,以期有效提高網絡管理員的工作效率。

1 基于Python的自動備份程序

Python語言是一種面向對象、解釋型的計算機程序設計語言,由荷蘭人Guido van Rossum于1989年末提出并隨后設計實現。Python語言由于具有簡單易學、免費開源、類庫豐富、可擴展性強等特點,深受廣大程序員的喜愛[4]。Netmiko類庫是一個非常強大的Python網絡管理類庫,它是一個SSHV2開源項目,基于Paramiko類庫開發,支持諸多廠商的網絡設備,包括思科、華為、華三、Juniper等主要網絡設備平臺,且簡化了回顯結果和設備的配置命令,方便易用[5]。本研究探討對H3C交換機設備的連接管理,Netmiko支持telnet、ssh協議的CLI連接,但有些設備是不支持telnet協議的。因此,出于安全考慮,網絡設備建議采用ssh協議連接為主。

1.1 基于Python的備份程序設計

使用Python提供的netmiko、time、shutil等類庫模塊,用Python語言編寫交換機配置的備份程序。其中,利用netmiko庫提供的功能模塊完成連接H3C交換機時,需要使用其相應的ConnectHandler方法,按照其數據結構提供包含設備類型、IP地址、用戶名、密碼字典參數。成功連接網絡設備后,執行相關交換機命令,最后將回顯信息保存,詳細核心代碼如下所示:

#下面定義幾個全局變量

today = time.strftime("%Y-%m-%d", time.localtime()) #獲取本地時間

# 下面代碼檢查并生成備份文件夾

if os.path.exists(back_path + today + "/"): #檢查是否存在相關文件夾

shutil.rmtree(back_path + today + "/") #如已存在,則刪除已有文件夾

os.mkdir(back_path + today + "/")

# 下面代碼讀取交換機信息

for line in sw_list.readlines():

line = line.replace(", ") #去除空格

list= line.split(", ") #以逗號進行分隔字段

sw_name = str(list[0]) #獲取設備名稱

sw_type = list[1] #獲取設備類型,比如H3C的設備類型為hp_comware

ip = list[2] #獲取設備IP地址

name = list[3] #獲取設備管理員賬號

sw_passwd = list[4] #獲取設備管理員密碼

#connecthandler設備連接類的數據結構,建立一個連接變量,并進行賦值

net_connect = ConnectHandler(

device_type=sw_type,

ip=ip,

username=name,password=sw_passwd,)

txtname =back_path + today + "/" + sw_name + "_" + ip + "_" + today + ".txt" #備份文件名稱設定

time.sleep(2) #考慮到交換機延時,程序暫停2秒

#保存顯示信息

wr.write(output) #將配置回顯信息保存到指定文件

wr.close #執行完畢,關閉文件

執行程序前,先生成一個需要批量備份的網絡設備清單??梢员4鏋椤?csv”文件格式,也可以保存為其他格式文件,本研究為了便于管理采用“.csv”格式,網絡設備備份清單格式如圖1所示。

圖1 網絡設備備份清單

通過執行自動備份程序,批量備份的交換機配置會生成包含交換機名、交換機IP地址和時間信息的命名,并且將備份的配置文件保存在以備份日期命名的文件夾中。比如c:/auto_backup/switch_backup/2022-08-01/hexin_192.168.250.1_2022-08-01.txt,這樣一個命名對于管理人員來說辨識非常方便,可直觀地顯示這是哪里的交換機,使用哪個IP地址,以及備份文件生成的日期是哪一天。備份實際結果如圖2所示。

圖2 備份結果

1.2 自動運行備份程序

完成Python備份程序的開發后,要實現自動備份可在Windows操作系統下,選擇Windows“任務計劃程序”設置自動定時運行。利用pyinstaller工具生成一個Windows下的可執行程序;在“任務計劃程序”下,選擇“創建基本任務”,按照步驟提示將生成的可執行程序添加進去;然后,設定好程序執行的時間和周期(根據需要,可以每天某個時間執行一次,或每周某一天執行一次),即可在Windows環境下定期執行備份程序,完成交換機配置的批量自動備份。

2 交換機自動備份功能

局域網中的交換機由于類型不同,采用定期自動的配置命令也不同,而且,不是所有的交換機都支持這一功能[6]。對于具備自動備份功能的交換機,使用這一方式進行自動備份,首先設定一臺TFTP服務器,然后定期自動在交換機上執行自動備份命令后,相關配置文件就會自動上傳到這個服務器指定的目錄中。

以H3C交換機為例,要定期將交換機的配置文件自動備份到相關TFTP服務器,可使用job命令,將配置文件通過tftp命令傳至tftp服務器,但需要在用戶視圖下完成。交換機的具體定期自動備份配置如下:

[C6_32U]job backup202207 #創建任務backup202207

[C6_32U-job-backup202207]view monitor #進入用戶視圖

[C6_32U-job-backup202207]time 1 repeating at 01∶00 week-day Sat command tftp 192.168.250.85 put config.cfg 192.168.250.231.cfg #配置定時執行任務,使設備在每個星期六1∶00進行備份

3 自動備份效果

自動備份能提升網絡管理人員的工作效率。通過對兩種自動備份方式進行比較,采用基于Python的自動備份程序更加便利:一是對所有的交換機都適用,不需要額外設置TFTP服務器;二是備份更靈活,可以隨時自動運行程序進行批量備份。但采用這種方法的缺點是運維管理人員需要具備一定的編程水平。利用交換機自動備份功能,只適用于具備此功能的交換機,在文件傳輸過程中采用tftp協議,安全性較差,并需要進行額外的安全設置,且初次使用,需對每臺交換機手動進行設置操作,但一旦設置完成,后期運行穩定性好,維護成本較低。本研究利用自動備份小程序,對106臺交換機進行自動備份,共計用時11分鐘19秒,平均一臺6.3秒,遠遠高于人工備份的效率;采用交換機自動備份功能由于首次配置工作量較大,暫未進行大規模實際操作。

4 總結

為提高大中型局域網絡環境中網絡運維管理人員對大量交換機配置進行備份的效率,以H3C交換機為例,給出了兩種有效的交換機批量自動備份方法。第一種方法通過利用netmiko庫編寫一個Python自動備份程序,達到批量備份的目的,并結合Windows操作系統的任務計劃程序,設置了程序自動執行,從而使得自動備份程序可以定期自動運行。第二種方法利用H3C交換機的job自動備份命令,實現H3C交換機配置的自動批量備份。兩種方法各有利弊,第一種方法方便實用,但需要運維管理人員具備一定的編程水平;第二種方法僅在交換機上就能完成自動備份設置,但不是所有的交換機都支持這一功能,而且第一次使用時需要分別在每臺交換機上完成該配置,網絡規模越大,需要的操作就越多。所以,實際運維中,管理員可根據實際情況,合理選擇使用這兩種方法,從而達到提高局域網設備自動備份的工作效率。

猜你喜歡
類庫配置文件網絡設備
提示用戶配置文件錯誤 這樣解決
網絡設備的安裝與調試課程思政整體設計
一種基于C# 的網絡設備自動化登錄工具的研制
用Java編寫客戶機/服務器端應用程序
互不干涉混用Chromium Edge
Python在數據可視化中的應用
忘記ESXi主機root密碼怎么辦
數據結構課程教學改革方案和應用效果
數據結構可視化類庫的設計與實現
打印機設置
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合