陳 軍,張偉剛,黃 立
(湖州電力局,浙江 湖州313000)
隨著國家電網(wǎng)公司智能電網(wǎng)戰(zhàn)略的逐步推進、公司信息化水平的不斷提升,辦公自動化、生產(chǎn)信息化對信息系統(tǒng)的依賴程度越來越高,同時對信息系統(tǒng)的可靠性要求也與日俱增.信息網(wǎng)絡(luò)是信息系統(tǒng)的基礎(chǔ),可靠的信息網(wǎng)絡(luò)才能支撐信息系統(tǒng)健康、穩(wěn)定的運行.
信息網(wǎng)絡(luò)運行過程中,設(shè)備硬件故障是一個潛在的、不可消除的且隨時可能發(fā)生的風(fēng)險.因此,在平時運維工作中需要定期對網(wǎng)絡(luò)設(shè)備的配置文件等相關(guān)信息進行備份,以便在設(shè)備故障時將備份導(dǎo)入相同型號的備品備件,使用備品備件替換故障設(shè)備,實現(xiàn)網(wǎng)絡(luò)設(shè)備故障快速搶修,提高網(wǎng)絡(luò)可用率.
本文介紹一種基于TFTP服務(wù)的網(wǎng)絡(luò)設(shè)備自動集中備份工具及實現(xiàn)方法,幫助網(wǎng)絡(luò)管理員提高工作效率.
目前,網(wǎng)絡(luò)設(shè)備備份最常用的一種方法是利用TFTP協(xié)議將物理位置分散的在線運行網(wǎng)絡(luò)設(shè)備的相關(guān)信息(主要是配置文件)集中傳輸至服務(wù)端,然后將收集到的備份文件轉(zhuǎn)移存放到其他可永久保存的存儲介質(zhì)中(如移動硬盤、光盤等).下面以備份思科交換機的配置文件為例介紹該方法的實現(xiàn)過程,其主要分為部署TFTP服務(wù)、執(zhí)行備份命令和存放配置文件三個步驟.
可以使用Windows操作系統(tǒng)常用的TFTP 軟件(如3CDaemon)部署TFTP 服務(wù).假設(shè)TFTP 服務(wù)地址為10.147.158.45,登陸到思科交換機上使用“ping 10.147.158.45”命令,測試交換機與TFTP服務(wù)器之間的網(wǎng)絡(luò)聯(lián)通狀況,確保交換機能正常訪問TFTP服務(wù)器.
登陸目標交換機,使用“enable”命令進入特權(quán)模式,執(zhí)行“copy starup-config tftp”命令,進行配置文件備份操作.命令執(zhí)行結(jié)果如圖1所示,配置文件已成功上傳,大小6167bytes,耗時0.067秒.其中,Address or name of remote host表示TFTP服務(wù)器的地址,Destination filename表示上傳到服務(wù)器根目錄的配置文件的文件名.
在專用的存儲介質(zhì)中,按照“年度/季度/網(wǎng)絡(luò)設(shè)備分級/網(wǎng)絡(luò)設(shè)備名稱”的方式創(chuàng)建文件夾,以便下次使用時能快速找到,如圖2所示.將上一步備份的配置文件s01-hz-xdl-2-3560-confg從TFTP服務(wù)的根目錄復(fù)制到指定目錄下長期保存.
浙江省湖州電力局目前在運核心層、匯聚層和接入層網(wǎng)絡(luò)設(shè)備近300臺.按照上述方法,如果采用手工方式逐臺登錄設(shè)備且僅進行配置文件備份,以網(wǎng)絡(luò)管理員每天備份100臺計算,需要3個工作日才能完成所有設(shè)備的備份工作,不但重復(fù)勞動工作量大而且準確性也難以保證.基于上述現(xiàn)狀,網(wǎng)絡(luò)管理員需要一個能將上述備份過程自動化的工具,實現(xiàn)自動集中備份所有在線運行網(wǎng)絡(luò)設(shè)備的配置文件、運行信息和操作系統(tǒng)(IOS文件),提高工作效率和備份數(shù)據(jù)的準確性.
實現(xiàn)網(wǎng)絡(luò)設(shè)備快速自動集中備份,需要先將網(wǎng)絡(luò)設(shè)備進行歸類整理并統(tǒng)計每臺設(shè)備的一些屬性;根據(jù)上述信息,利用SSH 協(xié)議或Telnet協(xié)議進行遠程登錄,向設(shè)備推送備份命令,待命令執(zhí)行完成后退出登陸設(shè)備,最后將備份至TFTP服務(wù)端根目錄的備份文件歸類存放.
實現(xiàn)自動備份的前提是對網(wǎng)絡(luò)設(shè)備進行歸類梳理.首先,不同品牌的設(shè)備使用利用TFTP方式備份的命令各有區(qū)別;其次,執(zhí)行備份命令必須先登錄設(shè)備,而相同品牌的設(shè)備因操作系統(tǒng)版本不同支持的遠程登錄方式也不同.
3.1.1 備份命令
目前浙江省湖州電力局的網(wǎng)絡(luò)設(shè)備主要有三種品牌CISCO、H3C 和Foundry.以下是針對這三種品牌設(shè)備的備份命令說明.
(1)CISCO 備份命令.
“copy startup-config tftp://IP/文件名”
(2)H3C備份命令.
“tftp IP put startup.cfg”
(3)Foundry備份命令.
“copy startup-config tftp IP文件名”
這些命令必須在特權(quán)模式下執(zhí)行,其中IP 為TFTP 服務(wù)器的IP 地址,文件名為將配置文件上傳至TFTP服務(wù)器根目錄下保存的文件名.
3.1.2 登錄方式
自動備份命令都需要在特權(quán)模式下執(zhí)行,即首先需要遠程登錄網(wǎng)絡(luò)設(shè)備.因為操作系統(tǒng)版本的差異,遠程登錄方式根據(jù)支持協(xié)議的不同主要分為兩種:Telnet和SSH.
(1)Telnet.Telnet協(xié)議是TCP/IP協(xié)議族中的一員,是Internet遠程登陸服務(wù)的標準協(xié)議和主要方式[1].現(xiàn)有網(wǎng)絡(luò)設(shè)備一般都支持Telnet,但是因為該協(xié)議的聯(lián)機會話采用明文傳輸信息,包括用戶名和密碼,因此安全性較差.
(2)SSH.SSH 是Secure Shell的縮寫,由IETF的網(wǎng)絡(luò)工作小組(Network Working Group)所制定.SSH 是建立在應(yīng)用層和傳輸層基礎(chǔ)上的安全協(xié)議,是目前較為可靠,且專為遠程登錄會話和其它網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議[2].到目前為止,有兩個不兼容的版本——SSH1和SSH2.雖然SSH 是替代Telnet和其他遠程控制臺管理應(yīng)用程序的行業(yè)標準,但并不是所有的設(shè)備都支持,一些型號較老的設(shè)備不支持SSH,有些雖然支持SSH 但僅僅支持SSH1.
3.1.3 分類統(tǒng)計
利用Excel表格工具將在線運行的網(wǎng)絡(luò)設(shè)備按照核心層、匯聚層和接入層以不同的工作表進行分類存放,每臺設(shè)備統(tǒng)計9個屬性供自動備份時使用,如圖3所示.每個屬性的用途解釋如下:
備份:指示該設(shè)備是否需要執(zhí)行自動備份,1表示執(zhí)行,0表示不執(zhí)行.
描述:設(shè)備的中文描述,自動備份時會自動創(chuàng)建以該描述為名稱的文件夾,用于存放該設(shè)備的備份文件.
主機名:設(shè)備的hostname信息,在自動備份時用于判斷命令何時執(zhí)行完成.
管理地址:設(shè)備的管理IP地址(交換機一般為Vlan地址,路由器一般為LookBack地址),遠程登錄設(shè)備時需要.
登陸:遠程登錄該設(shè)備采用的協(xié)議,自動備份工具支持Telnet、SSH1和SSH2三種.
品牌:設(shè)備的品牌,目前支持的設(shè)備有CISCO、H3C和Foundry三種.
賬戶:遠程登錄使用的用戶名.
密碼:遠程登錄使用的密碼.
特權(quán)密碼:備份命令需要在特權(quán)模式下運行,需要使用特權(quán)密碼進入該模式.
3.2.1 Excel文件讀取
Windows操作系統(tǒng)的.Net開發(fā)平臺提供了System.Data.OleDb命名空間的一些功能強大的類,可以將Excel文件看成普通數(shù)據(jù)庫進行處理.
使用OleDbConnection類可以連接到Excel文件,它將Excel文件中的每個工作表看成數(shù)據(jù)庫的Table,將工作表中的每一行看作數(shù)據(jù)庫的Record.用于建立連接字符串為:“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=文件名;Extended Properties='Excel 8.0;HDR=Y(jié)es;IMEX=1'”.其中,文件名為Excel文件的全名(包括路徑),HDR=Y(jié)es表示過濾標題行,IMEX=1表示將混合型作為文本型讀取,避免空值.
使用OleDbDataAdapter類可以用來執(zhí)行SQL 語句.如果是查詢語句,可以使用OleDbDataAdapter類Fill方法將查詢結(jié)果載入DataTable或DataSet內(nèi)存數(shù)據(jù)結(jié)構(gòu)中,供程序處理.
3.2.2 遠程登錄
自動備份程序的核心就是利用SSH 協(xié)議或Telnet協(xié)議對設(shè)備進行遠程登錄,然后向其推送備份命令.對SSH 和Telnet兩種客戶端協(xié)議的編程實現(xiàn)難度和工作量都非常大,但我們沒有必要重復(fù)“造輪子”,可以在互聯(lián)網(wǎng)上(如SouceForge、Codeplex等網(wǎng)站)找到開放源代碼的相關(guān)庫,直接引入到程序中使用,必要時還可以對其進行適當?shù)脑创a改造.
Tamir Gal開發(fā)的SharpSSH 是一個純.NET 開發(fā)環(huán)境實現(xiàn)的支持SSH 客戶端協(xié)議的套件,非常好用,下載地址為http://www.tamirgal.com.
Telnet的本質(zhì)就是scoket,因為沒有涉及到加密和認證,用.NET 平臺提供的TcpClient、TcpListner類就可實現(xiàn).在codeplex上有一個TelnetCSharp庫,雖然版本有點老,但非常好用,下載地址為http://telnetcsharp.codeplex.com.
3.2.3 判斷命令結(jié)束
實現(xiàn)程序自動執(zhí)行命令需要解決的另一個問題是判斷命令何時執(zhí)行完成.根據(jù)命令執(zhí)行過程中會向登錄客戶端主動返回運行信息這一事實.目前常用的方法是:向設(shè)備推送命令后,在客戶端接收緩存區(qū)中查找特定的字符串,找到則表示命令執(zhí)行完成.查找的字符串是命令執(zhí)行結(jié)束后必然出現(xiàn)的,例如,一臺主機名為“Swith”的交換機,在特權(quán)模式下運行完命令后,最后一行一定會出現(xiàn)“Swith?!?
為了防止死等現(xiàn)象,必須同步設(shè)置超時機制,當特定字符串超過時限還未出現(xiàn)時,認為命令執(zhí)行失敗,強制結(jié)束命令.由于不同命令執(zhí)行時間各不相同,超時限需要在推送命令時根據(jù)實際情況進行設(shè)置,默認情況下為2秒.
在命令執(zhí)行過程中,客戶端接收緩存區(qū)是實時更新的,所以在時限范圍內(nèi)需要不停地檢查特定的字符串是否出現(xiàn).為了避免循環(huán)檢查消耗過多的CPU 時間,需要設(shè)置一個兩次檢查之間的時間間隔,默認情況下為500毫秒,即做完一次檢查沒有發(fā)現(xiàn)特定的字符串,讓出CPU 時間500毫秒后,才能再一次發(fā)起檢查.
在網(wǎng)絡(luò)設(shè)備歸類統(tǒng)計完成的基礎(chǔ)上,即可以利用程序?qū)崿F(xiàn)備份工作的自動化,程序必須與TFTP服務(wù)程序部署在同一臺計算機上,流程如圖4所示.
程序首先通過檢查UDP協(xié)議69端口是否處于偵聽狀態(tài),判斷TFTP服務(wù)是否開啟,若TFTP服務(wù)異常則結(jié)束程序.接著連接到設(shè)備統(tǒng)計EXCEL文件,逐條讀取網(wǎng)絡(luò)設(shè)備屬性信息進入自動備份流程.
備份流程首先根據(jù)設(shè)備的品牌和登錄協(xié)議創(chuàng)建不同類型的備份實例,因為備份命令因設(shè)備品牌而異,并且登錄協(xié)議因設(shè)備操作系統(tǒng)而異.備份實例一共有六種,分別是:
(1)Cisco_SSH_Robot,用于支持SSH 協(xié)議的思科設(shè)備.
(2)SSHCisco_Telnet_Robot,用于僅支持Telnet協(xié)議的思科設(shè)備.
(3)H3C_SSH_Robot,用于支持SSH 協(xié)議的華為3COM 設(shè)備.
(4)H3C_Telnet_Robot,用于僅支持Telnet協(xié)議的華為3COM 設(shè)備.
(5)Foundry_SSH_Robot,用于支持SSH 協(xié)議的華為Foundry設(shè)備.
(6)Foundry_Telnet_Robot,用于僅支持Telnet協(xié)議的華為Foundry設(shè)備.
備份實例選定后,依次進行登陸設(shè)備、進入特權(quán)模式和執(zhí)行備份命令的操作.在這三步操作過程中,如有錯誤發(fā)生,則在記錄失敗日志后,流轉(zhuǎn)至下一個設(shè)備的備份工作中.其中,進入特權(quán)模式和執(zhí)行備份命令兩步操作出錯后還需要進行退出登陸操作,及時斷開與網(wǎng)絡(luò)設(shè)備的連接.
如果執(zhí)行備份命令成功,還需要進行最后一步操作,即將備份到TFTP根目錄的備份文件存放至專用移動硬盤的特定目錄.程序會按照“年度/季度/網(wǎng)絡(luò)設(shè)備分級/網(wǎng)絡(luò)設(shè)備名稱”的規(guī)則自動創(chuàng)建文件夾.轉(zhuǎn)存操作完成后,退出登陸設(shè)備,記錄成功日志后,流轉(zhuǎn)至下一個設(shè)備的備份工作.
最后,設(shè)備統(tǒng)計文件中的所有記錄按照此流程操作完畢后,程序執(zhí)行結(jié)束,所有網(wǎng)絡(luò)設(shè)備的備份工作完成.
程序運行界面截圖如圖5所示.程序支持三種備份項目,分別是配置文件、運行信息和操作系統(tǒng)(即IOS文件),在備份選項中可以按照需要進行勾選.在TFTP地址欄中填寫TFTP服務(wù)器地址,由于同機部署,可以通過“獲取”按鍵自動捕獲本機的IP 地址.在TFTP根目錄欄中填寫TFTP根目錄的路徑,以便程序能找到從交換機備份過來的備份文件進行分類轉(zhuǎn)存.在配置文件欄中填入EXCEL 文件全名(包括路徑),以便程序取得網(wǎng)絡(luò)設(shè)備的信息.
在備份過程中,文本框中會動態(tài)顯示程序執(zhí)行過程中每個網(wǎng)絡(luò)設(shè)備的自動備份結(jié)果.如果某個設(shè)備自動備份失敗,可以通過“錯誤日志”按鈕調(diào)取詳細的錯誤日志進行原因分析.
本工具作為電力系統(tǒng)現(xiàn)有信息網(wǎng)絡(luò)運維手段的一個有效補充,可方便地部署在管理員辦公電腦上,在無人值守的條件下自動、高效地集中備份在線運行網(wǎng)絡(luò)設(shè)備的配置文件、運行信息和操作系統(tǒng).
浙江省湖州電力局投運以來,原本需要花費網(wǎng)絡(luò)管理員3個工作日才能完成的工作,現(xiàn)可在網(wǎng)絡(luò)空閑時段(如下班后)讓該工具自動完成,解放了網(wǎng)絡(luò)管理員的生產(chǎn)力,提高了工作效率,取得了良好的效果.
[1]百度百科.Telnet協(xié)議[EB/OL].2013-04-20.http://baike.baidu.com/view/44255.htm.
[2]百度百科SSH 協(xié)議[EB/OL].2013-04-20.http://baike.baidu.com/view/16184.htm.