蘇萌 王莎
摘 要:路由器、交換機等網絡設備的配置備份是日常維護工作的重要內容,但路由器、交換機的配置比較復雜,一旦配置丟失,恢復工作極為繁重,而且極容易出錯。該文論述了在Linux環境下運用Expect腳本,通過TFTP協議遠程實現網絡設備配置定期自動備份的方法。
關鍵詞:Linux TFTP 配置文件 自動備份
中圖分類號:TP393 文獻標識碼:A 文章編號:1674-098X(2015)02(c)-0055-02
海油大網的網絡結構是由多種設備組成的,包括服務器、路由器、交換機和防火墻等,每個設備上面都配置了詳細的網絡參數,在這些設備中又以路由交換設備最為重要。對路由交換設備的配置信息進行備份是日常維護的重要內容,因為路由交換設備的配置比較復雜,一旦配置丟失,手工恢復不僅工作量相當大,而且容易出錯。因此有必要對路由交換設備的配置進行定期備份,保障海油大網的正常運行。
實現配置自動備份的軟件有多種,但價格比較昂貴,而Linux系統是開源免費的,不僅功能強大,而且安全性高,穩定性好,已成為當前企業的重要服務器平臺。因此本文在基于Linux的環境下編寫備份腳本程序,以實現網絡設備配置信息的定期自動備份功能。
1 Linux下TFTP服務的安裝與配置
TFTP(Trivial File Transfer Protocol,簡單文件傳輸協議)是用來下載遠程文件的最簡單網絡協議,它是基于UDP協議實現的。Linux系統的tftp-client是內置的,無需配置,只需對Linux服務器端的tftp-server進行安裝與配置。
(1)在Linux系統下安裝TFTP服務。
說明Linux系統安裝TFTP成功。
(2)修改TFTP配置文件。
安裝完TFTP軟件包后,需要開啟TFTP服務才能正常使用,TFTP服務默認情況下是禁用的,需要修改配置文件/etc/xinetd.d/tftp開啟TFTP服務,主要是將其disable的狀態修改為no,使其生效,并在server_args中設置tftp根目錄。
(3)關閉防火墻。
從安全角度來說,服務器的防火墻不應關閉,應該按照其所提供的服務開啟相應端口,本文所進行的操作為探索模式,僅搭建測試服務器,因此選擇暫時關閉防火墻。
Redhat的Linux包含兩種防火墻,一個是IPtables,另一個是Selinux,我們首先將selinux關閉,通過以下命令將其狀態設置為enforcing:
隨后,對IPtables進行操作,我們用腳本形式對其策略進行設置:
將其保存為一個腳本,必須執行a.sh才能對防火墻策略生效:
chmod u+x a.sh 加執行權限
./a.sh 執行
(4)創建備份保存目錄,并賦予相應權限,隨后啟動tftp-server
(5)檢查TFTP所使用的69號端口已打開
在命令行輸入netstat –nlp
有如下結果,說明TFTP服務可以正常工作。
2 Linux下配置備份的設計與實現
2.1 備份腳本程序的實現
由于我們需要根據設備返回的一些信息進行相應的操作,因此我們利用Liunx下的Expect腳本,實現對網絡設備配置的定期自動備份,單獨的Expect必須要與Shell相互配合,以使Linux shell能夠支持交互。通過預先編制腳本,讓路由交換設備的配置文件按備份日期自動備份到TFTP對應的目錄下,不僅可以提高效率而且可以保證備份信息的完整性,方便維護人員查看了解。具體實現過程如下:
(1)編寫TXT文本文件,用于存放路由器、交換機等網絡設備的IP地址、遠程登錄密碼、使能密碼及網絡設備的名稱,建議在實際生產環境中,要對該文件進行加密,在后面的腳本執行過程中會依次調用TXT文件中的參數。如在本設計中使用的routers.txt文件,即為路由交換設備配置列表。
(2)編寫Expect腳本文件,主要思路為:自動Telnet網絡設備→輸入登陸密碼→執行備份命令→將下載下來的配置文件重命名并保存到指定文件夾→備份完成并退出設備。Expect腳本需要設置可執行權限,腳本依次登錄每臺設備并在每臺上執行“copy run tftp:”命令,即完成一臺設備的配置備份工作后,將自動執行下一臺設備的備份工作,直至將所有的設備都備份完成為止。
(3)編寫主執行程序main-shell.sh,需要設置為可執行權限,通過../backup/main-shell.sh執行,用于從routers文件循環取值并調用expect腳本。
2.2 Linux下實行計劃任務
因為網絡的需求隨時會有變化,網絡設備的配置也需要隨之進行修改,所以不可能網絡設備的配置備份一次就一勞永逸,而應該是循環定期備份網絡設備的配置,及時將最新的配置備份下來。Linux系統支持atd和crond兩種計劃任務,由于atd服務使用的at命令只能執行一次,所以我們采用crond服務,使用crontab定義的命令,因為其具有循環作用,可以滿足我們的需求。
編寫/etc/crontab文件可以對系統的計劃任務進行定義,系統會定時讀取該文件,并根據里面的定義執行命令。下面配置中表示每周一的12:30對/backup/main-shell.sh文件執行一次,即對routers文件中的網絡設備進行一次配置備份。
修改完/etc/crontab文件后,需要重啟一下crond服務:service crond restart ,否則計劃任務可能不生效。
2.3 驗證結果
如下圖所示,可以看到在12:30之前,查看/backup/configbackup目錄,并沒有文件,而在12:30之后再查看/backup/configbackup,發現生成了4個以.config結尾的文件,即路由交換設備的配置備份文件,且其名稱中包含有備份的日期,便于查找。結果也表明在Linux環境下運用Expect腳本,通過TFTP協議遠程實現網絡設備配置定期自動備份的方法是可行的。
3 結論
該文在Linux環境下采用編制腳本的方式實現了對路由交換設備的定期自動備份,不僅減少了人力、時間的浪費,提高了效率,而且保證了備份數據的無誤,其結果也驗證了該方法的優越性和可行性,具有一定的實用價值。
參考文獻
[1] 石進.巧用SecureCRT腳本實現網絡設備配置備份自動化[J].有線電視技術,2011(3):57-58.
[2] 鳥哥.鳥哥的Linux私房菜基礎學習篇[M].3版.北京:人民郵電出版社,2013.
[3] 劉宇.關于交換機配置文件實現自動備份的研究[J].電腦與電信,2011(3):59-61.