引言:網(wǎng)絡(luò)規(guī)模越來越大,設(shè)備越來越多。運(yùn)維人員管理著成百上千臺的設(shè)備,一方面要保障設(shè)備穩(wěn)定運(yùn)行,另一方面要快速處理故障,這就需要運(yùn)維人員平時不斷更新備份設(shè)備的配置數(shù)據(jù)。本文重點闡述,如何開發(fā)簡單的小程序輕松實現(xiàn)自動備份全網(wǎng)數(shù)據(jù)設(shè)備的配置。
目前,我們現(xiàn)網(wǎng)的數(shù)據(jù)設(shè)備Cisco路由交換、CMTS接入設(shè)備、EPON接入設(shè)備都有TFTP命令,將配置保存到TFTP服務(wù)器。比如:
都有相關(guān)的TFTP命令,每種類型的設(shè)備命令格式有略微的差別。
本項目的原理就是,將所有數(shù)據(jù)設(shè)備存放在數(shù)據(jù)庫中,并給每臺數(shù)據(jù)設(shè)備定義好設(shè)備型號,php程序輪詢數(shù)據(jù)庫,每條記錄調(diào)用shell腳本,自動執(zhí)行TELNET 命令,登陸到每臺數(shù)據(jù)設(shè)備,執(zhí)行下tftp導(dǎo)配置命令,并將配置按照設(shè)備類型保存到指定文件夾。
主要有以下幾個重要項目:
device_table表
php程序輪詢這個表。
ip:每臺數(shù)據(jù)設(shè)備的IP地址,唯一。用于telnet設(shè)備用。
hostname:主機(jī)名,通過SNMP獲取,用作自動備份配置時給配置起文件名。
description:主機(jī)描述,通過SNMP獲取。
device_type:設(shè)備類型,事先定義好。(比如:route、switch、cmts、eopn)
model表
model:設(shè)備型號,事先定義好。有二個用途:用于自動備份時選擇shell腳本,因為,每種型號的設(shè)備tftp 命令有區(qū)別。為每個型號做個shell腳本,比較靈活,有新型號設(shè)備,添加一個shell腳本就OK。用于給數(shù)據(jù)設(shè)備分類,所有TFTP過來的配置,都按照設(shè)備類型進(jìn)行保存。
model:數(shù)據(jù)設(shè)備錄入數(shù)據(jù)庫時,提供選擇,必選。
在這個文件夾中,存放所有設(shè)備型號的shell腳本,文件名跟model表中的一樣。
A、數(shù)據(jù)設(shè)備錄入功能:單個設(shè)備錄入,批量設(shè)備錄入。
B、數(shù)據(jù)設(shè)備配置批量備份。
數(shù)據(jù)設(shè)備錄入功能:將數(shù)據(jù)設(shè)備錄進(jìn)數(shù)據(jù)庫
單個設(shè)備錄入功能
只需要填入IP地址,選擇設(shè)備型號即可,添加設(shè)備時做以下幾個操作。
1)檢查數(shù)據(jù)庫中IP是否存在,存在不添加,不存在則添加進(jìn)數(shù)據(jù)庫。
2)通過SNMP獲取設(shè)備的主機(jī)名(hostname)、主機(jī)描述(description)等信息。
3)寫進(jìn)數(shù)據(jù)庫的字段有ip、hostname、description、version、device_type、model。
4)部分php代碼如下:
批量設(shè)備錄入功能
批量錄入有個注意點:上傳文件里的ip,只能是同一型號的設(shè)備,并且選擇好設(shè)備型號。
批量添加的php代碼
數(shù)據(jù)設(shè)備配置批量備份
/*歷遍數(shù)據(jù)庫device_table表,取出三個有用的 字 段 ip:用 于telnet;hostname:配置文件名;modem:選擇shell腳本的變量。*/
首先默認(rèn)策略
然后添加允許的 網(wǎng)段、端口。我的防火墻策略寫得不是很細(xì),只是開放相關(guān)網(wǎng)段。
設(shè)備網(wǎng)段允許服務(wù)器主動請求出去,不允許設(shè)備網(wǎng)段主動請求服務(wù)器。
2016年02月01日已經(jīng)在現(xiàn)網(wǎng)中實際使用,176臺數(shù)據(jù)設(shè)備,配置在20分鐘內(nèi)全部保存完畢。
由于開發(fā)了此自動備份程序,在很大程度上為網(wǎng)絡(luò)設(shè)備的穩(wěn)定運(yùn)行提供了強(qiáng)有力的保障。大大減少了網(wǎng)絡(luò)中斷時間以及網(wǎng)絡(luò)故障的影響面,網(wǎng)絡(luò)運(yùn)營商的品牌形象得到了進(jìn)一步的提高。