欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種設(shè)備配置信息解析方法

文檔序號(hào):7959896閱讀:188來源:國知局
專利名稱:一種設(shè)備配置信息解析方法
技術(shù)領(lǐng)域
本發(fā)明涉及網(wǎng)絡(luò)管理領(lǐng)域,尤其涉及一種網(wǎng)絡(luò)管理過程中的設(shè)備配置信息解析方法。
背景技術(shù)
當(dāng)前,在網(wǎng)絡(luò)上運(yùn)行的設(shè)備大多已經(jīng)進(jìn)行過客戶化。在客戶化過程中,用戶通過配置命令實(shí)現(xiàn)對網(wǎng)絡(luò)上設(shè)備的配置,以實(shí)現(xiàn)這些設(shè)備的客戶化。在網(wǎng)絡(luò)管理過程中,需要將這些配置命令以及配置命令中的配置信息在前臺(tái)進(jìn)行顯示,并且在一些情況下,還需要對顯示的配置命令中的配置信息進(jìn)行修改,以實(shí)現(xiàn)對網(wǎng)絡(luò)設(shè)備的維護(hù)。當(dāng)前,實(shí)現(xiàn)此種維護(hù)的方法主要有兩種,分別是1)如果被用戶配置的設(shè)備自帶數(shù)據(jù)庫,可以利用該數(shù)據(jù)庫提供的功能,將用戶的配置信息導(dǎo)出成文件,再利用文件傳輸協(xié)議將該各個(gè)設(shè)備所導(dǎo)出的文件傳送到某一地點(diǎn)集中存儲(chǔ),在該地點(diǎn)集中實(shí)現(xiàn)對文件修改,從而修改配置信息;2)不論被用戶配置的設(shè)備是否自帶數(shù)據(jù)庫,網(wǎng)管站通過telnet協(xié)議下發(fā)并運(yùn)行一條顯示設(shè)備當(dāng)前配置信息的命令,并通過telnet協(xié)議接收返回的配置信息;可以把這些配置信息存儲(chǔ)到文件中保存,在該文件中可以修改這些信息,并通過終端文件傳輸協(xié)議發(fā)送到設(shè)備,更新設(shè)備配置,從而實(shí)現(xiàn)對設(shè)備的全新配置。
由于方式2)通過運(yùn)行顯示設(shè)備當(dāng)前配置信息的命令,得到的信息的可讀性和可解析性較方式1)好,所以應(yīng)用較廣。如果要通過方式2)修改設(shè)備配置,就必須解決配置信息的解析問題,配置信息可以簡單認(rèn)為是字符流,但解析的規(guī)則必須是依據(jù)設(shè)備配置命令的語法,因此,如何提供這個(gè)規(guī)則并利用該規(guī)則實(shí)現(xiàn)解析成為實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備管理的一個(gè)關(guān)鍵問題。
現(xiàn)有技術(shù)一在該現(xiàn)有技術(shù)中,在被配置的設(shè)備上編寫程序代碼,在用戶將配置命令及其參數(shù)信息一條一條輸入到被配置的設(shè)備上后,該程序根據(jù)輸入的命令找到相應(yīng)的處理函數(shù),該函數(shù)知道該命令的參數(shù)信息,可以完成配置信息的解析。這種方案與操作系統(tǒng)的指令集類似,特點(diǎn)是沒有任何例如配置文件和數(shù)據(jù)庫的媒介提供相關(guān)語法,而是采用編寫代碼提供語法。
該現(xiàn)有技術(shù)具有如下缺點(diǎn)1)由于采用被配置設(shè)備上的代碼進(jìn)行解析,因此,該現(xiàn)有技術(shù)對被配置設(shè)備依賴嚴(yán)重,由于被配置設(shè)備的不穩(wěn)定,會(huì)造成存有所編寫代碼的解析配置信息模塊的穩(wěn)定性無法保障;2)無擴(kuò)展性由于采用被配置的設(shè)備上的代碼進(jìn)行解析,因此,各個(gè)被配置設(shè)備需要分別對命令集進(jìn)行注冊和維護(hù),工作量較大,且隨著設(shè)備命令變化,需要不停修改代碼,其修改過程也是一個(gè)工作量很大的過程。
現(xiàn)有技術(shù)二在該現(xiàn)有技術(shù)中,考慮到解析靈活性的需要,網(wǎng)管站提供了語法的配置文件,所有命令的定義信息,按照一定格式一條一條的記錄到配置文件中;解析時(shí),網(wǎng)管站根據(jù)被解析的命令名稱到配置文件中找出該命令的語法定義的記錄,根據(jù)這個(gè)記錄信息,完成解析工作。該現(xiàn)有技術(shù)用擴(kuò)展標(biāo)記語言(XML)來保存命令的語法定義,解析配置信息時(shí)從XML文件讀取相關(guān)規(guī)則;讀取命令集時(shí),采用XML組織所提供的文檔對象模型(DOM)并使用這種模型的相關(guān)庫。在該現(xiàn)有技術(shù)中的語法定義中,存在一種迭代的命令關(guān)系,表現(xiàn)為每一條命令都有一個(gè)父親和兒子,如果父親為空,則表示該命令處于迭代的開始位置,如果兒子為空,則表示迭代中止。這種迭代關(guān)系實(shí)際是為了表現(xiàn)一顆樹,命令的組織通常按照樹進(jìn)行的。
該現(xiàn)有技術(shù)具有如下缺點(diǎn)1)使用樹的形式組織命令會(huì)在實(shí)際解析過程中占用大量的內(nèi)存;2)必須使用DOM和相關(guān)庫,對該DOM和相關(guān)庫的解析會(huì)造成工作量大幅增加;3)語法文件中的記錄較多為了包含所有的分支情況,需要為每種組合定義一條語法紀(jì)錄,因此造成紀(jì)錄較多。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種設(shè)備配置信息的解析方法,該方法采用基于網(wǎng)管站上數(shù)據(jù)庫的語法定義表對配置信息進(jìn)行解析,以克服解析過程對被配置設(shè)備的依賴,并且通過采用語法定義表,達(dá)到減小解析工作量的目的。
本發(fā)明為一種設(shè)備配置信息解析方法,其特征在于該方法包括以下步驟A、網(wǎng)管站將包含有設(shè)備配置信息的語法定義表保存在網(wǎng)管站中;B、網(wǎng)管站獲取設(shè)備的配置信息,按照網(wǎng)管站數(shù)據(jù)庫中語法定義表的語法定義,解析該設(shè)備的配置信息。
其中,所述語法定義表至少包括用于定義命令模式的命令模式表;用于定義各個(gè)命令的命令名稱、命令類型、主要參數(shù)個(gè)數(shù)、和可選參數(shù)個(gè)數(shù)的命令名和標(biāo)識(shí)對應(yīng)表;用于定義命令的主要參數(shù)名稱和位置的主要參數(shù)表;用于定義命令可選參數(shù)名稱、可選參數(shù)是否帶值的可選參數(shù)表;和用于定義接口命令標(biāo)識(shí)和該接口命令下的組內(nèi)命令標(biāo)識(shí)的接口命令組表;其中,在命令模式表、命令名和標(biāo)識(shí)對應(yīng)表、主要參數(shù)表和可選參數(shù)表中還包括配置信息中命令的命令標(biāo)識(shí)。
其中,步驟A中,所述語法定義表保存在網(wǎng)管站的數(shù)據(jù)庫中。
其中,步驟A為
網(wǎng)管站通過數(shù)據(jù)庫腳本將所有配置信息的語法定義插入到數(shù)據(jù)庫中的語法定義表中。
其中,步驟A中,所述語法定義表或者通過擴(kuò)展標(biāo)記語言保存在網(wǎng)管站中。
其中,步驟B中所述網(wǎng)管站獲取配置信息包括網(wǎng)管站通過用于遠(yuǎn)程連接服務(wù)的標(biāo)準(zhǔn)協(xié)議(telnet),向設(shè)備下發(fā)顯示配置信息的命令;設(shè)備收到該命令,顯示配置信息,并通過telnet協(xié)議向網(wǎng)管站返回配置信息,網(wǎng)管站將配置信息保存在緩沖區(qū)。
其中,步驟B中所述解析包括B1、網(wǎng)管站逐行讀入配置信息字符流,根據(jù)所述語法定義表中的內(nèi)容判斷該行配置信息中的命令是否已經(jīng)注冊,如果是,則執(zhí)行步驟B2;否則,結(jié)束當(dāng)前行的解析,返回步驟B1;B2、網(wǎng)管站結(jié)束對配置信息字符流的命令名稱的處理,根據(jù)所述語法定義表中的內(nèi)容,處理配置信息中的命令模式;B3、根據(jù)所述語法定義表中的內(nèi)容,獲得并提取出配置信息中的參數(shù);返回執(zhí)行步驟B1,直至處理完配置信息的所有行。
其中,步驟B1中,所述判斷命令是否已經(jīng)注冊包括B11、獲得字符流當(dāng)前行的字符串中命令的第一個(gè)單元;B12、在命令名與標(biāo)識(shí)對應(yīng)表中用作記錄命令名稱的數(shù)組中,查找包含上述第一單元的所有命令名稱;如果找到的命令名稱的個(gè)數(shù)為0,表示在命令名與標(biāo)識(shí)對應(yīng)表中沒有注冊該命名,查找過程結(jié)束,并且結(jié)束對當(dāng)前行字符串的解析過程;如果找到的命令名稱個(gè)數(shù)為1,則執(zhí)行步驟B13,如果找到的命令名稱個(gè)數(shù)大于1,則執(zhí)行步驟B14;B13、判斷找到的命令名稱中的組成單元的個(gè)數(shù),如果組成單元個(gè)數(shù)為1,表明當(dāng)前行字符串中的命令名稱與找到的命令名稱命令完全相符,則判斷得到當(dāng)前行字符串中的命令名稱在語法定義表中已經(jīng)注冊,同時(shí)得到該命令名稱;如果找到的命令名稱的組成單元個(gè)數(shù)大于1,則取出該命令名稱的所有單元,與當(dāng)前行字符串中命令名稱的所有單元逐一進(jìn)行比較,如果都相同,則判斷得到當(dāng)前行字符串中的命令名稱已經(jīng)注冊,并得到該命令名稱,否則,判斷得到當(dāng)前行字符串中的命令名稱沒有注冊;B14、逐個(gè)取出找到的命令名稱,按照步驟B13所述的方法判斷當(dāng)前行字符串的命令名稱是否已經(jīng)注冊,如果當(dāng)前行字符串的命令名稱與找到的所有命令名稱都沒有完全相符,則判斷得到該當(dāng)前行字符串命令名稱沒有注冊;否則,判斷得到當(dāng)前行字符串中的命令名稱已經(jīng)注冊。
其中,步驟B2中,所述結(jié)束對配置信息字符流的命令名稱的處理為網(wǎng)管站將字符流指針移動(dòng)到配置信息字符流的命令名稱結(jié)束處,具體包括B21、計(jì)算命令名稱中單元個(gè)數(shù);B22、判斷命令名稱的個(gè)數(shù)是否等于1,如果是,不移動(dòng)指針;否則,逐個(gè)取出命令名稱中的每個(gè)單元,并依次分別將字符串緩沖區(qū)的指針位置修改到當(dāng)前取出單元的下一個(gè)單元。
其中,步驟B2中,所述處理命令模式包括B23、判斷接口命令是否標(biāo)記為假,如果是,則直接執(zhí)行步驟B24;如果不是,執(zhí)行步驟B25,其中,接口命令在進(jìn)行所述處理命令模式之前被標(biāo)記為假;B24、取出當(dāng)前命令對應(yīng)的模式,判斷命令模式是否為接口模式,如果是,則將接口命令標(biāo)記為真,并記錄此接口命令名稱,將該名稱作為該接口命令組內(nèi)命令的父親名稱特性,然后,開始對下一條命令進(jìn)行處理,執(zhí)行步驟B25;B25、判斷當(dāng)前命令是否是接口模式,如果是,則執(zhí)行步驟B26;否則,執(zhí)行步驟B27;B26、用當(dāng)前命令覆蓋接口命令名稱,開始下一組接口命令的處理;B27、從所述接口命令組表中遍歷當(dāng)前接口命令的組成命令,看有無命令標(biāo)識(shí)與當(dāng)前命令標(biāo)識(shí)相同,如果沒有,則修改接口命令標(biāo)記為假,當(dāng)前接口命令的處理結(jié)束;如果有,則把當(dāng)前接口命令名稱作為該命令的父親名稱特性。
其中,步驟B3中,所述獲得并提取參數(shù)包括B31、保存指到字符流參數(shù)位置處的字符流當(dāng)前位置;B32、根據(jù)得到的命令名稱,在所述主要參數(shù)表中判斷該命令的主要參數(shù)的個(gè)數(shù)是否大于0,如果是,則執(zhí)行步驟B33及后續(xù)步驟,否則,執(zhí)行步驟B39及后續(xù)步驟;B33、在主要參數(shù)表中順序取出一個(gè)主要參數(shù);自字符流的當(dāng)前位置開始,順序取出該命令中屬于參數(shù)的一個(gè)單元;B34、判斷取出的主要參數(shù)的位置是否被定義為-1,如果不是,則執(zhí)行步驟B35,否則,取出字符流中屬于參數(shù)的下一個(gè)單元,判斷該單元是否是已經(jīng)在可選參數(shù)表中注冊了的可選參數(shù)的關(guān)鍵詞,如果是,則提取該可能出現(xiàn)的主要參數(shù),然后返回步驟B33,直至對該命令的所有主要參數(shù)處理完畢,執(zhí)行步驟B38;否則,該字符流的命令為異常命令,結(jié)束對該行字符流的解析過程;B35、將取出的主要參數(shù)的位置與取出當(dāng)前字符流單元的位置進(jìn)行比較,如果位置一致,則執(zhí)行步驟B36;如果主要參數(shù)定義的位置大于當(dāng)前字符流的位置,則執(zhí)行步驟B37;如果主要參數(shù)定義的位置已經(jīng)小于了當(dāng)前字符流的位置,則字符流的命令為異常命令,結(jié)束對該行字符流的解析過程;B36、將當(dāng)前字符流單元的內(nèi)容作為參數(shù)值提取出來并保存,然后返回步驟B33,直至對該命令的所有主要參數(shù)處理完畢,執(zhí)行步驟B38;B37、順序取出當(dāng)前字符流單元的下一個(gè)單元,返回執(zhí)行步驟B35,直到兩個(gè)位置的值相同時(shí)為止;如果到字符流一行結(jié)束時(shí),這兩個(gè)單元的位置仍然沒有達(dá)到一致,則字符流的命令為異常命令,結(jié)束對該行字符流的解析過程;B38、將字符流的位置恢復(fù)為步驟B31所保存的位置;
B39、判斷可選參數(shù)的個(gè)數(shù)是否大于0,如果是,則執(zhí)行步驟B40;否則,判斷該命令定義的主要參數(shù)和可選參數(shù)的個(gè)數(shù)是否都為-1,如果是,則結(jié)束參數(shù)提取過程;B40、在可選參數(shù)表中順序取出第一個(gè)可選參數(shù),自字符流的當(dāng)前位置開始,順序查找可選參數(shù)中的關(guān)鍵詞;如果找到關(guān)鍵詞,則執(zhí)行步驟B41;否則,如果在字符流中沒有找到關(guān)鍵詞,則字符流的命令為異常命令,結(jié)束對該行字符流的解析過程;B41、判斷關(guān)鍵詞在字符流中的位置是否是字符流的起始位置,如果是,則執(zhí)行步驟B42;否則,則檢查字符流中關(guān)鍵詞的前一個(gè)字符和后一個(gè)字符是否都是空格,如果是,說明命令中配置了此參數(shù),執(zhí)行步驟B43;否則,返回執(zhí)行步驟B40;B42、如果關(guān)鍵詞在字符流中的位置是字符流的起始位置,則檢查字符流中關(guān)鍵詞后一個(gè)字符是否為空格,如果是,則執(zhí)行步驟B43;否則,返回執(zhí)行步驟B40;B43、根據(jù)可選參數(shù)表中的內(nèi)容,判斷所取出參數(shù)的參數(shù)是否帶值一項(xiàng)的值是否為0,如果是,則把參數(shù)名稱提取出來;如果為1,則從參數(shù)名稱字段取出關(guān)鍵詞后面的參數(shù)個(gè)數(shù)信息,從字符流中取出相應(yīng)個(gè)數(shù)的單元,作為此關(guān)鍵詞后跟的參數(shù)值;B44處理完當(dāng)前可選參數(shù)后,恢復(fù)字符流的位置為步驟B31所保存的位置,返回步驟B40,直至處理完所有可選參數(shù)。
可見,本發(fā)明具有如下優(yōu)點(diǎn)1)由于對被配置設(shè)備信息的解析過程是在網(wǎng)管站上進(jìn)行的,因此,本發(fā)明將設(shè)備配置信息的解析和被配置設(shè)備本身分割開來,從而減小了解析過程對設(shè)備的依賴,增加了解析的穩(wěn)定性;2)提供擴(kuò)展性在設(shè)備命令的語法發(fā)生變化或者命令增加刪除時(shí),可以不修改設(shè)備的代碼,而只對數(shù)據(jù)庫中的語法定義表進(jìn)行更新即可;
3)由于采用語法定義表的形式保存語法定義,因此,可以不使用DOM模型以及相關(guān)庫實(shí)現(xiàn)解析過程,減少了解析的工作量;4)語法定義表的定義方式使得定義結(jié)構(gòu)相對簡單,并減小了在解析過程中對網(wǎng)管站的內(nèi)存要求。


圖1為本發(fā)明實(shí)施例中利用五張語法定義表實(shí)現(xiàn)用戶配置信息解析的流程圖。
圖2為圖1所示步驟102的具體實(shí)現(xiàn)的流程圖。
圖3為圖1所示步驟103的具體實(shí)現(xiàn)的流程圖。
圖4為圖1所示步驟105中實(shí)現(xiàn)對配置信息中主要參數(shù)處理的流程圖。
圖5為圖1所示步驟105中實(shí)現(xiàn)對配置信息中可選參數(shù)處理的流程圖。
具體實(shí)施例方式
本發(fā)明為一種設(shè)備配置信息的解析方法,在該方法中,網(wǎng)管站使用在數(shù)據(jù)庫中預(yù)先設(shè)定的語法定義,對例如Cmd a b c的用戶的配置信息進(jìn)行解析處理,從而解析得到用戶配置信息中的命令名稱Cmd,以及各個(gè)參數(shù)a、b和c。
下面結(jié)合附圖對本發(fā)明進(jìn)行詳細(xì)描述。
在對本發(fā)明進(jìn)行詳細(xì)描述之前,首先對本發(fā)明中所涉及的一些概念加以解釋1、命令模式該命令模式用于組織有共性的一組命令,一條命令可以屬于多個(gè)模式,如接口模式、特權(quán)用戶模式等;2、雖然解析過程中所涉及的命令參數(shù)眾多,但可以將這些參數(shù)分為主要參數(shù)(PrimaryPara)和可選參數(shù)(OptionalPara),主要參數(shù)是必須的參數(shù),通過該參數(shù)定義的位置可以提取,而無法通過關(guān)鍵詞提?。豢蛇x參數(shù)一般都有關(guān)鍵詞,后面緊跟參數(shù)值;可選參數(shù)也可以不帶參數(shù)值,以參數(shù)名作為參數(shù)值;作為擴(kuò)展,本發(fā)明還支持關(guān)鍵詞前面帶參數(shù)值的特例;3、合法性考慮到配置信息中的命令行都是合法的,因此,在本發(fā)明中,無需再分析配置命令中的參數(shù)是否合法。
在本發(fā)明實(shí)施例中,采用網(wǎng)管站上的數(shù)據(jù)庫實(shí)現(xiàn)對配置命令集信息的存儲(chǔ),在該數(shù)據(jù)庫中定義了五張語法定義表來存儲(chǔ)配置命令及其參數(shù)信息,這五張語法定義表分別是(1)命令模式表(CmdModeTab)用于記錄命令的模式,其定義內(nèi)容包括命令模式(CmdMode),整型;該命令模式為0或任意自然數(shù),用以描述命令的模式;命令標(biāo)識(shí)(CmdID),整型;該命令標(biāo)識(shí)作為描述命令的標(biāo)識(shí)(ID),一條配置命令只具有一個(gè)ID;(2)命令名和標(biāo)識(shí)對應(yīng)表(CmdNameIDTab)用于記錄一條命令,其定義內(nèi)容包括CmdID,整型;命令名稱(CmdName),字符串;該命令名稱為命令的名字;命令類型(CmdType),整型;該命令類型用于幫助輸入命令的類型定義;命令主要參數(shù)(CmdPrimary),整型;表示命令的主要參數(shù)個(gè)數(shù);命令可選參數(shù)(CmdOptional),整型;表示命令的可選參數(shù)個(gè)數(shù);(3)主要參數(shù)表(PrimaryParaTab)用于記錄命令的主要參數(shù),其定義內(nèi)容包括CmdID,整型;參數(shù)名稱(ParaName),字符串;表示參數(shù)名字;參數(shù)位置(ParaIdx),整型;表示該主要參數(shù)定義的位置;(4)可選參數(shù)表(OptionalParaTab)用于定義命令的可選參數(shù),其定義內(nèi)容包括CmdID,整型;ParaName,字符串;表示參數(shù)的名稱;參數(shù)是否帶值(ParaSelf),整型,該P(yáng)araSelf非0即1,表示參數(shù)后面是否有值;如果為0,表示只有關(guān)鍵詞;如果為1,表示關(guān)鍵詞后面跟參數(shù)值,可以是多個(gè);在參數(shù)值是多個(gè)的情況下,可以用某種符號(hào)如X,跟蹤在參數(shù)名稱后面,以X的個(gè)數(shù)標(biāo)識(shí)出參數(shù)值個(gè)數(shù);(5)接口命令組表(IFCmdGrpTab)用于記錄接口命令和該接口命令下的組內(nèi)命令,以實(shí)現(xiàn)命令之間的層次關(guān)系;接口命令是為了表示不同命令之間的層次關(guān)系而設(shè)定的一種命令,在實(shí)際應(yīng)用中,一些命令會(huì)屬于同一個(gè)命令,此時(shí),這同一個(gè)命令為接口命令,屬于這同一個(gè)命令的那些命令則可以被歸納為一個(gè)組,該組內(nèi)的所有命令屬于接口命令的兒子命令,該接口命令為該組內(nèi)的所有命令的父親命令;利用不同的接口命令對應(yīng)不同的組內(nèi)命令,以此方式,實(shí)現(xiàn)對不同命令之間層次關(guān)系的定義;接口命令組表的定義內(nèi)容包括接口命令標(biāo)識(shí)(IFCmdID),整型;表示接口命令的CmdID;組內(nèi)命令標(biāo)識(shí)(InGrpCmdID),整型;用于表示屬于上述接口命令標(biāo)識(shí)所代表的命令的一些組內(nèi)命令的ID。
上述五張語法定義表在數(shù)據(jù)庫中除了以表的形式保存之外,還可以利用XML文件的形式進(jìn)行保存,該XML文件與上述的語法定義表中所記錄的內(nèi)容可以相互轉(zhuǎn)換。
在本發(fā)明實(shí)施例中,假定存在如下的命令定義snmp-server community community-name[view view-name][ro|rw]其中,snmp-server community為命令標(biāo)識(shí),community-name為主要參數(shù)名稱,view為可選參數(shù)名稱,view-name為作為關(guān)鍵詞的view后面所跟的參數(shù)值,ro和rw為后面不跟參數(shù)值的可選參數(shù)名稱;為了實(shí)現(xiàn)在數(shù)據(jù)庫中存儲(chǔ)該命令定義,參照上述關(guān)于對存儲(chǔ)命令及其參數(shù)信息的五張語法定義表的定義,在表1~表4所示的四張語法定義表中插入該命令的定義

表1 CmdModeTab

表2 CmdNameIDTab

表3 PrimaryParaTab

表4 OptionalParaTab由于在本發(fā)明實(shí)施例中,命令定義snmp-server communitycommunity-name[view view-name][ro|rw]沒有涉及到接口命令組表的相關(guān)內(nèi)容,因此,參見表5所示,在接口命令組表中不包括該命令定義的內(nèi)容。

表5 IFCmdGrpTab本發(fā)明實(shí)施例中,采用數(shù)據(jù)庫腳本,將上述命令及其參數(shù)插入所述的四張表中,對于其它的命令定義,也可以依照該方法,將各自的命令和參數(shù)信息分別存儲(chǔ)到數(shù)據(jù)庫的五張語法定義表中;參見圖1所示,本發(fā)明實(shí)施例中,利用上述表1~表5所存儲(chǔ)的語法定義,實(shí)現(xiàn)對如下用戶配置信息的解析snmp-server community public ro具體包括以下步驟步驟100網(wǎng)管站獲取設(shè)備的配置信息,設(shè)備顯示配置信息,具體包括網(wǎng)管站通過用于遠(yuǎn)程連接服務(wù)的標(biāo)準(zhǔn)協(xié)議(telnet)向被用戶配置過的設(shè)備發(fā)送顯示配置信息的命令,被配置設(shè)備收到該命令后,顯示用戶配置信息,并通過telnet協(xié)議向網(wǎng)管站返回用戶配置信息,網(wǎng)管站將該用戶配置信息存入緩沖區(qū)以等待解析;在該步驟中,如果網(wǎng)管站在預(yù)先設(shè)定的時(shí)間內(nèi)沒有收到被配置設(shè)備返回的用戶配置信息,或者程序出錯(cuò),則網(wǎng)管站結(jié)束本次解析過程;在網(wǎng)管站獲得被配置設(shè)備的所有用戶配置信息后,執(zhí)行步驟101;步驟101網(wǎng)管站從緩沖區(qū)中按照順序讀出配置信息中的一行字符串,判斷該行字符串是否為空行,如果是,則自緩沖區(qū)中按照順序讀出下一行字符串,否則,去掉該字符串的前導(dǎo)空格,然后執(zhí)行步驟102;步驟102依照上述的五張語法定義表,判斷讀出的該行字符串中的命令是否已經(jīng)在語法定義表中注冊,如果是,則獲得命令名稱,執(zhí)行步驟103;否則,返回步驟101;當(dāng)然,在配置信息中,還可能包括注釋行,由于注釋行不是真正意義上的配置信息,因此,在本步驟中,進(jìn)一步包括判斷該行是否以注釋行的特殊標(biāo)識(shí),如“!”或“//”,開頭,如果是,則返回步驟101;步驟103將字符流指針移動(dòng)到配置信息字符流中的命令名稱結(jié)束處;步驟104依照上述的五張語法定義表,處理配置信息中的命令模式;由于在本發(fā)明實(shí)施例中,被處理的配置信息中不包括有關(guān)命令模式的內(nèi)容,因此,在本發(fā)明實(shí)施例中,本步驟并不執(zhí)行;步驟105依照上述的五張語法定義表,獲取配置信息中的參數(shù)信息,并從其中提取得到參數(shù);步驟106判斷對配置信息中的所有行是否解析完畢,如果是,則結(jié)束本次解析過程,否則返回步驟101,繼續(xù)對配置信息中下一行進(jìn)行解析,直至對配置信息中的所有內(nèi)容解析完畢,結(jié)束本次解析過程。
下面逐一對上述相關(guān)步驟的具體實(shí)現(xiàn)加以詳細(xì)描述。
(1)步驟102的具體實(shí)現(xiàn)上述步驟102需要實(shí)現(xiàn)判斷讀出的字符串中的命令是否已經(jīng)在語法定義表中注冊,在確定了命令名稱的情況下,使得后續(xù)步驟可以根據(jù)得到的命令名稱從語法定義表中找到該命令對應(yīng)的參數(shù)和命令格式,以實(shí)現(xiàn)解析;由于命令名稱可以是一個(gè)對應(yīng)一個(gè)單詞的單元,也可以是多個(gè)對應(yīng)一個(gè)單詞的單元,因此,在處理配置信息時(shí),首先在語法定義表中找出所有具有配置信息中命令的第一個(gè)單元的命令定義,然后在這些命令定義中再找出具有配置信息中命令的前兩個(gè)單元的命令定義,接下來再在其中找出具有配置信息中命令的前三個(gè)單元的命令定義,一旦找到唯一一個(gè)與具有配置信息中命令完全相符的命令定義,則判斷得到配置信息中命令在語法定義表中已經(jīng)注冊,并得到該命令的命令名稱,然后執(zhí)行后續(xù)步驟,繼續(xù)對配置信息進(jìn)行處理;如果最終沒有找到任何一個(gè)完全相符的命令,則結(jié)束對當(dāng)前行字符串的解析過程;參見圖2所示,具體處理步驟包括步驟201獲得當(dāng)前行的字符串中命令的第一個(gè)單元;步驟202在命令名與標(biāo)識(shí)對應(yīng)表中用作記錄命令名稱的數(shù)組中,查找包含上述第一單元的所有命令名稱;如果找到的命令名稱的個(gè)數(shù)為0,表示在命令名與標(biāo)識(shí)對應(yīng)表中沒有注冊該命名,執(zhí)行步驟207,查找過程結(jié)束,并且結(jié)束對當(dāng)前行字符串的解析過程;如果找到的命令名稱個(gè)數(shù)為1,則執(zhí)行步驟203,如果找到的命令名稱個(gè)數(shù)大于1,則執(zhí)行步驟204;步驟203判斷找到的命令名稱中的組成單元的個(gè)數(shù),如果組成單元個(gè)數(shù)為1,表明當(dāng)前行字符串中的命令名稱與找到的命令名稱命令完全相符,則執(zhí)行步驟208,判斷得到當(dāng)前行字符串中的命令名稱在語法定義表中已經(jīng)注冊,同時(shí)得到該命令名稱;如果找到的命令名稱的組成單元個(gè)數(shù)大于1,則執(zhí)行步驟205~206取出該命令名稱的所有單元,與當(dāng)前行字符串中命令名稱的所有單元逐一進(jìn)行比較,如果都相同,則執(zhí)行步驟208,判斷得到當(dāng)前行字符串中的命令名稱已經(jīng)注冊,并得到該命令名稱,否則,執(zhí)行步驟207,判斷得到當(dāng)前行字符串中的命令名稱沒有注冊;步驟204逐個(gè)取出找到的命令名稱,按照步驟203和步驟205~206所述的方法判斷當(dāng)前行字符串的命令名稱是否已經(jīng)注冊;在本步驟中,如果當(dāng)前行字符串的命令名稱與找到的所有命令名稱都沒有完全相符,則執(zhí)行步驟207,判斷得到該當(dāng)前行字符串命令名稱沒有注冊,結(jié)束對當(dāng)前行字符串的解析過程。
(2)步驟103的具體實(shí)現(xiàn)步驟103用以根據(jù)命令名稱處理字符流,讓字符流移動(dòng)到命令名稱結(jié)束處,從而使得字符流處于參數(shù)位置;其具體實(shí)現(xiàn)步驟為a.計(jì)算命令名稱中單元個(gè)數(shù);b.判斷命令名稱中單元個(gè)數(shù)是否等于1,如果是,由于字符串緩沖區(qū)的當(dāng)前指針已經(jīng)指到命令名稱的結(jié)束處,因此,不需要進(jìn)一步移動(dòng)指針;否則,逐個(gè)取出命令名稱中的每個(gè)單元,并依次分別將字符串緩沖區(qū)的指針位置修改到當(dāng)前取出單元的下一個(gè)單元。
(3)步驟104的具體實(shí)現(xiàn)步驟104用于處理與命令模式有關(guān)的內(nèi)容,在步驟104處理之前,將接口命令標(biāo)記為假,參見圖3所示,具體處理步驟包括步驟300判斷接口命令標(biāo)記是否為假,如果是,表明在對當(dāng)前接口命令處理之前沒有進(jìn)行過接口命令的處理,則直接執(zhí)行步驟301;如果不是,表明在對當(dāng)前接口命令處理之前已經(jīng)進(jìn)行過接口命令的處理,執(zhí)行步驟302;步驟301取出當(dāng)前命令對應(yīng)的模式,如命令模式為接口模式,則將接口命令標(biāo)記為真,并記錄此接口命令名稱,將該名稱作為該接口命令組內(nèi)命令的父親名稱特性,對本接口命令處理完畢,開始對下一條命令進(jìn)行處理,執(zhí)行步驟302;步驟302判斷當(dāng)前命令是否是接口模式,如果是,則執(zhí)行步驟303;否則,執(zhí)行步驟304;步驟303由于當(dāng)前命令的模式是也為接口模式,表明對上一條接口命令的組內(nèi)命令已經(jīng)處理完畢,因此,在本步驟中,用當(dāng)前命令覆蓋接口命令名稱,開始下一組接口命令的處理;步驟304~步驟307從表IFCmdGrpTab中遍歷當(dāng)前接口命令的組成命令,看有無命令標(biāo)識(shí)與當(dāng)前命令標(biāo)識(shí)相同如果沒有命令屬于當(dāng)前接口命令,則修改接口命令標(biāo)記為假,當(dāng)前接口命令的處理結(jié)束;如果有命令屬于當(dāng)前接口命令,則把當(dāng)前接口命令名稱填入到該命令的父親名稱特性。
例如有如下的命令interface interface-namenat reset其中,nat reset是接口命令interface的組內(nèi)命令,則A3在處理nat reset時(shí),從IFCmdGrpTab中與interface命令對應(yīng)的所有記錄,在其中查找是否包含與nat reset相對應(yīng)的標(biāo)識(shí),結(jié)果是,則把命令nat reset的父親特性填寫為interface。
(4)步驟105的具體實(shí)現(xiàn)步驟105用作參數(shù)的提取,本發(fā)明所采用的命令語法定義將大大減小解析的復(fù)雜度;在對步驟105的實(shí)現(xiàn)步驟進(jìn)行詳細(xì)描述之前,首先對命令中有可能出現(xiàn)的參數(shù)情況加以描述第一種情況存在如下的命令命令A[B][KEY1 C D][KEY2 E]
其中,參數(shù)A是主要參數(shù),在該命令中必須出現(xiàn);參數(shù)B是一種特殊的主要參數(shù),該參數(shù)由于不帶關(guān)鍵詞,因此不能歸為可選參數(shù)一類,但該參數(shù)在命令中可能不出現(xiàn),因此,將該類參數(shù)歸為特殊的主要參數(shù),例如參數(shù)B這類的主要參數(shù)在一個(gè)命令中不會(huì)出現(xiàn)兩個(gè)相連的情況;參數(shù)C、D都是可選參數(shù),在關(guān)鍵詞KEY1出現(xiàn)時(shí)才會(huì)出現(xiàn),由于參數(shù)C和D都屬于同一關(guān)鍵詞KEY1,因此,在命令中可以將它們集合到一起,以相應(yīng)減少一半的語法記錄;參數(shù)E是可選參數(shù),在關(guān)鍵詞KEY2出現(xiàn)時(shí)才出現(xiàn);為了提取以上命令中的參數(shù),可以按照如下方式進(jìn)行主要參數(shù)A可以由位置指出,如可以指定參數(shù)A的位置為0,則從命令后取第一個(gè)單元,作為參數(shù)A的值即可;參數(shù)B是主要參數(shù),但由于它可以不出現(xiàn),因此,不能從位置信息獲得它是否出現(xiàn),為了減小解析此類參數(shù)所需要的語法記錄,特別地將參數(shù)B的位置定義為-1;B是否出現(xiàn)可以通過檢查B后是否有關(guān)鍵詞KEY1或KEY2來決定如果B后緊跟KEY1或KEY2,則可以提取參數(shù)B的參數(shù)值;提取參數(shù)C、D時(shí)先定位關(guān)鍵詞KEY1,找出其后的兩個(gè)單元作為其參數(shù)值保存即可;提取參數(shù)E,可以按照對于參數(shù)C和D的處理類似進(jìn)行。
第二種情況命令A[B]參數(shù)A是主要參數(shù),在命令中肯定出現(xiàn);參數(shù)B是主要參數(shù),在命令中有可能不出現(xiàn);對于參數(shù)A的提取可以按照上述第一種情況中的處理方法進(jìn)行,關(guān)鍵是對于參數(shù)B的提取處理,在處理時(shí),在語法記錄中將B也定義成主要參數(shù),實(shí)際過程中,如果參數(shù)A后面還有一個(gè)單元,則表明在該命令中B出現(xiàn),提取參數(shù)B;否則表明在該命令中B沒有出現(xiàn)。
為了實(shí)現(xiàn)在上述兩種情況下,均可正確提取參數(shù),參見圖4和圖5所示,步驟105采用如下步驟來具體實(shí)現(xiàn)參見圖4所示,步驟105中實(shí)現(xiàn)對配置信息中主要參數(shù)處理的步驟包括步驟401保存字符流的當(dāng)前位置,該當(dāng)前位置為通過步驟103將字符流指針指到的參數(shù)位置處;步驟402根據(jù)由步驟102得到的命令名稱,在主要參數(shù)表中判斷該命令的主要參數(shù)的個(gè)數(shù)是否大于0,如果是,則執(zhí)行步驟403及后續(xù)步驟,開始提取主要參數(shù),否則,根據(jù)該命令名稱對應(yīng)的可選參數(shù)表開始提取可選參數(shù),該過程參見圖5所示;步驟403在主要參數(shù)表中順序取出一個(gè)主要參數(shù)自字符流的當(dāng)前位置開始,順序取出該命令中屬于參數(shù)的一個(gè)單元;步驟404判斷取出的主要參數(shù)的位置是否被定義為-1,如果不是,則執(zhí)行步驟405,否則,執(zhí)行步驟409~410取出字符流中屬于參數(shù)的下一個(gè)單元,判斷該單元是否是已經(jīng)在可選參數(shù)表中注冊了的可選參數(shù)的關(guān)鍵詞,如果是,則表明此可能出現(xiàn)的主要參數(shù)在字符流中出現(xiàn),提取該可能出現(xiàn)的主要參數(shù),然后返回步驟403,直至對該命令的所有主要參數(shù)處理完畢,開始按照圖5所示流程進(jìn)行可選參數(shù)的提取過程;否則,執(zhí)行步驟407判斷得到該字符流的命令為異常命令,結(jié)束對該行字符流的解析過程;步驟405將取出的主要參數(shù)的位置與取出當(dāng)前字符流單元的位置進(jìn)行比較,如果位置一致,則執(zhí)行步驟406;如果主要參數(shù)定義的位置大于當(dāng)前字符流的位置,則執(zhí)行步驟408;如果主要參數(shù)定義的位置已經(jīng)小于了當(dāng)前字符流的位置,則執(zhí)行步驟407判斷得到字符流的命令為異常命令,結(jié)束對該行字符流的解析過程;步驟406將當(dāng)前字符流單元的內(nèi)容作為參數(shù)值提取出來并保存,然后返回步驟403,直至對該命令的所有主要參數(shù)處理完畢,開始按照圖5所示流程進(jìn)行可選參數(shù)的提??;
408順序取出當(dāng)前字符流單元的下一個(gè)單元,返回執(zhí)行步驟405,直到兩個(gè)位置的值相同時(shí)為止;如果到字符流一行結(jié)束時(shí),這兩個(gè)單元的位置仍然沒有達(dá)到一致,則字符流的命令為異常命令,結(jié)束對該行字符流的解析過程;參見圖5所示,步驟105中實(shí)現(xiàn)對配置信息中可選參數(shù)處理的步驟包括步驟501將字符流的位置恢復(fù)為步驟401所保存的位置,也就是將字符流位置恢復(fù)到字符流的參數(shù)位置處;步驟502判斷可選參數(shù)的個(gè)數(shù)是否大于0,如果是,則執(zhí)行步驟503;否則,判斷該命令定義的主要參數(shù)和可選參數(shù)的個(gè)數(shù)是否都為-1,如果是,表示此命令不跟任何參數(shù),則結(jié)束參數(shù)提取過程;步驟503~步驟504在可選參數(shù)表中順序取出可選參數(shù),自字符流的當(dāng)前位置開始,順序查找可選參數(shù)中的關(guān)鍵詞;如果找到關(guān)鍵詞,則執(zhí)行步驟505;否則,則字符流的命令為異常命令,結(jié)束對該行字符流的解析過程;步驟505判斷關(guān)鍵詞在字符流中的位置是否是字符流的起始位置,如果是,則執(zhí)行步驟506;否則,執(zhí)行步驟507檢查字符流中關(guān)鍵詞的前一個(gè)字符和后一個(gè)字符是否都是空格,如果是,說明命令中配置了此參數(shù),執(zhí)行步驟508;否則,說明找到的關(guān)鍵詞只是一個(gè)單元的部分字符,命令中并沒有配置此參數(shù),返回執(zhí)行步驟503;步驟506檢查字符流中關(guān)鍵詞后一個(gè)字符是否為空格,如果是,則說明命令中配置了此參數(shù),執(zhí)行步驟508;否則,說明找到的關(guān)鍵詞只是一個(gè)單元的部分字符,命令中并沒有配置此參數(shù),返回執(zhí)行步驟503;步驟508~步驟510判斷取出參數(shù)的ParaSelf值是否為0,如果是,則說明此可選參數(shù)無需跟參數(shù)值,僅把參數(shù)名稱提取出來;如果參數(shù)的ParaSelf值的為1,則說明此可選參數(shù)后面有參數(shù),從參數(shù)名稱字段取出關(guān)鍵詞后面的參數(shù)個(gè)數(shù)信息,從字符流中取出相應(yīng)個(gè)數(shù)的單元,作為此關(guān)鍵詞后跟的參數(shù)值;
步驟511處理當(dāng)前可選參數(shù)后,恢復(fù)字符流的位置為步驟401所保存的位置,返回步驟503,直至處理完所有可選參數(shù)。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種設(shè)備配置信息解析方法,其特征在于該方法包括以下步驟A、網(wǎng)管站將包含有設(shè)備配置信息的語法定義表保存在網(wǎng)管站中;B、網(wǎng)管站獲取設(shè)備的配置信息,按照網(wǎng)管站數(shù)據(jù)庫中語法定義表的語法定義,解析該設(shè)備的配置信息。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于所述語法定義表至少包括用于定義命令模式的命令模式表;用于定義各個(gè)命令的命令名稱、命令類型、主要參數(shù)個(gè)數(shù)、和可選參數(shù)個(gè)數(shù)的命令名和標(biāo)識(shí)對應(yīng)表;用于定義命令的主要參數(shù)名稱和位置的主要參數(shù)表;用于定義命令可選參數(shù)名稱、可選參數(shù)是否帶值的可選參數(shù)表;和用于定義接口命令標(biāo)識(shí)和該接口命令下的組內(nèi)命令標(biāo)識(shí)的接口命令組表;其中,在命令模式表、命令名和標(biāo)識(shí)對應(yīng)表、主要參數(shù)表和可選參數(shù)表中還包括配置信息中命令的命令標(biāo)識(shí)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟A中,所述語法定義表保存在網(wǎng)管站的數(shù)據(jù)庫中。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于步驟A為網(wǎng)管站通過數(shù)據(jù)庫腳本將所有配置信息的語法定義插入到數(shù)據(jù)庫中的語法定義表中。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟A中,所述語法定義表通過擴(kuò)展標(biāo)記語言保存在網(wǎng)管站中。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于步驟B中所述網(wǎng)管站獲取配置信息包括網(wǎng)管站通過用于遠(yuǎn)程連接服務(wù)的標(biāo)準(zhǔn)協(xié)議(telnet),向設(shè)備下發(fā)顯示配置信息的命令;設(shè)備收到該命令,顯示配置信息,并通過telnet協(xié)議向網(wǎng)管站返回配置信息,網(wǎng)管站將配置信息保存在緩沖區(qū)。
7.根據(jù)權(quán)利要求2所述的方法,其特征在于步驟B中所述解析包括B1、網(wǎng)管站逐行讀入配置信息字符流,根據(jù)所述語法定義表中的內(nèi)容判斷該行配置信息中的命令是否已經(jīng)注冊,如果是,則執(zhí)行步驟B2;否則,結(jié)束當(dāng)前行的解析,返回步驟B1;B2、網(wǎng)管站結(jié)束對配置信息字符流的命令名稱的處理,根據(jù)所述語法定義表中的內(nèi)容,處理配置信息中的命令模式;B3、根據(jù)所述語法定義表中的內(nèi)容,獲得并提取出配置信息中的參數(shù);返回執(zhí)行步驟B1,直至處理完配置信息的所有行。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,步驟B1中,所述判斷命令是否已經(jīng)注冊包括B11、獲得字符流當(dāng)前行的字符串中命令的第一個(gè)單元;B12、在命令名與標(biāo)識(shí)對應(yīng)表中用作記錄命令名稱的數(shù)組中,查找包含上述第一單元的所有命令名稱;如果找到的命令名稱的個(gè)數(shù)為0,表示在命令名與標(biāo)識(shí)對應(yīng)表中沒有注冊該命名,查找過程結(jié)束,并且結(jié)束對當(dāng)前行字符串的解析過程;如果找到的命令名稱個(gè)數(shù)為1,則執(zhí)行步驟B13,如果找到的命令名稱個(gè)數(shù)大于1,則執(zhí)行步驟B14;B13、判斷找到的命令名稱中的組成單元的個(gè)數(shù),如果組成單元個(gè)數(shù)為1,表明當(dāng)前行字符串中的命令名稱與找到的命令名稱命令完全相符,則判斷得到當(dāng)前行字符串中的命令名稱在語法定義表中已經(jīng)注冊,同時(shí)得到該命令名稱;如果找到的命令名稱的組成單元個(gè)數(shù)大于1,則取出該命令名稱的所有單元,與當(dāng)前行字符串中命令名稱的所有單元逐一進(jìn)行比較,如果都相同,則判斷得到當(dāng)前行字符串中的命令名稱已經(jīng)注冊,并得到該命令名稱,否則,判斷得到當(dāng)前行字符串中的命令名稱沒有注冊;B14、逐個(gè)取出找到的命令名稱,按照步驟B13所述的方法判斷當(dāng)前行字符串的命令名稱是否已經(jīng)注冊,如果當(dāng)前行字符串的命令名稱與找到的所有命令名稱都沒有完全相符,則判斷得到該當(dāng)前行字符串命令名稱沒有注冊;否則,判斷得到當(dāng)前行字符串中的命令名稱已經(jīng)注冊。
9.根據(jù)權(quán)利要求7所述的方法,其特征在于,步驟B2中,所述結(jié)束對配置信息字符流的命令名稱的處理為網(wǎng)管站將字符流指針移動(dòng)到配置信息字符流的命令名稱結(jié)束處,具體包括B21、計(jì)算命令名稱中單元個(gè)數(shù);B22、判斷命令名稱的個(gè)數(shù)是否等于1,如果是,不移動(dòng)指針;否則,逐個(gè)取出命令名稱中的每個(gè)單元,并依次分別將字符串緩沖區(qū)的指針位置修改到當(dāng)前取出單元的下一個(gè)單元。
10.根據(jù)權(quán)利要求7所述的方法,其特征在于,步驟B2中,所述處理命令模式包括B23、判斷接口命令是否標(biāo)記為假,如果是,則直接執(zhí)行步驟B24;如果不是,執(zhí)行步驟B25,其中,接口命令在進(jìn)行所述處理命令模式之前被標(biāo)記為假;B24、取出當(dāng)前命令對應(yīng)的模式,判斷命令模式是否為接口模式,如果是,則將接口命令標(biāo)記為真,并記錄此接口命令名稱,將該名稱作為該接口命令組內(nèi)命令的父親名稱特性,然后,開始對下一條命令進(jìn)行處理,執(zhí)行步驟B25;B25、判斷當(dāng)前命令是否是接口模式,如果是,則執(zhí)行步驟B26;否則,執(zhí)行步驟B27;B26、用當(dāng)前命令覆蓋接口命令名稱,開始下一組接口命令的處理;B27、從所述接口命令組表中遍歷當(dāng)前接口命令的組成命令,看有無命令標(biāo)識(shí)與當(dāng)前命令標(biāo)識(shí)相同,如果沒有,則修改接口命令標(biāo)記為假,當(dāng)前接口命令的處理結(jié)束;如果有,則把當(dāng)前接口命令名稱作為該命令的父親名稱特性。
11.根據(jù)權(quán)利要求7所述的方法,其特征在于,步驟B3中,所述獲得并提取參數(shù)包括B31、保存指到字符流參數(shù)位置處的字符流當(dāng)前位置;B32、根據(jù)得到的命令名稱,在所述主要參數(shù)表中判斷該命令的主要參數(shù)的個(gè)數(shù)是否大于0,如果是,則執(zhí)行步驟B33及后續(xù)步驟,否則,執(zhí)行步驟B39及后續(xù)步驟;B33、在主要參數(shù)表中順序取出一個(gè)主要參數(shù);自字符流的當(dāng)前位置開始,順序取出該命令中屬于參數(shù)的一個(gè)單元;B34、判斷取出的主要參數(shù)的位置是否被定義為-1,如果不是,則執(zhí)行步驟B35,否則,取出字符流中屬于參數(shù)的下一個(gè)單元,判斷該單元是否是已經(jīng)在可選參數(shù)表中注冊了的可選參數(shù)的關(guān)鍵詞,如果是,則提取該可能出現(xiàn)的主要參數(shù),然后返回步驟B33,直至對該命令的所有主要參數(shù)處理完畢,執(zhí)行步驟B38;否則,該字符流的命令為異常命令,結(jié)束對該行字符流的解析過程;B35、將取出的主要參數(shù)的位置與取出當(dāng)前字符流單元的位置進(jìn)行比較,如果位置一致,則執(zhí)行步驟B36;如果主要參數(shù)定義的位置大于當(dāng)前字符流的位置,則執(zhí)行步驟B37;如果主要參數(shù)定義的位置已經(jīng)小于了當(dāng)前字符流的位置,則字符流的命令為異常命令,結(jié)束對該行字符流的解析過程;B36、將當(dāng)前字符流單元的內(nèi)容作為參數(shù)值提取出來并保存,然后返回步驟B33,直至對該命令的所有主要參數(shù)處理完畢,執(zhí)行步驟B38;B37、順序取出當(dāng)前字符流單元的下一個(gè)單元,返回執(zhí)行步驟B35,直到兩個(gè)位置的值相同時(shí)為止;如果到字符流一行結(jié)束時(shí),這兩個(gè)單元的位置仍然沒有達(dá)到一致,則字符流的命令為異常命令,結(jié)束對該行字符流的解析過程;B38、將字符流的位置恢復(fù)為步驟B31所保存的位置;B39、判斷可選參數(shù)的個(gè)數(shù)是否大于0,如果是,則執(zhí)行步驟B40;否則,判斷該命令定義的主要參數(shù)和可選參數(shù)的個(gè)數(shù)是否都為-1,如果是,則結(jié)束參數(shù)提取過程;B40、在可選參數(shù)表中順序取出第一個(gè)可選參數(shù),自字符流的當(dāng)前位置開始,順序查找可選參數(shù)中的關(guān)鍵詞;如果找到關(guān)鍵詞,則執(zhí)行步驟B41;否則,如果在字符流中沒有找到關(guān)鍵詞,則字符流的命令為異常命令,結(jié)束對該行字符流的解析過程;B41、判斷關(guān)鍵詞在字符流中的位置是否是字符流的起始位置,如果是,則執(zhí)行步驟B42;否則,則檢查字符流中關(guān)鍵詞的前一個(gè)字符和后一個(gè)字符是否都是空格,如果是,說明命令中配置了此參數(shù),執(zhí)行步驟B43;否則,返回執(zhí)行步驟B40;B42、如果關(guān)鍵詞在字符流中的位置是字符流的起始位置,則檢查字符流中關(guān)鍵詞后一個(gè)字符是否為空格,如果是,則執(zhí)行步驟B43;否則,返回執(zhí)行步驟B40;B43、根據(jù)可選參數(shù)表中的內(nèi)容,判斷所取出參數(shù)的參數(shù)是否帶值一項(xiàng)的值是否為0,如果是,則把參數(shù)名稱提取出來;如果為1,則從參數(shù)名稱字段取出關(guān)鍵詞后面的參數(shù)個(gè)數(shù)信息,從字符流中取出相應(yīng)個(gè)數(shù)的單元,作為此關(guān)鍵詞后跟的參數(shù)值;B44處理完當(dāng)前可選參數(shù)后,恢復(fù)字符流的位置為步驟B31所保存的位置,返回步驟B40,直至處理完所有可選參數(shù)。
全文摘要
本發(fā)明公開了一種設(shè)備配置信息解析方法,其特征在于該方法包括以下步驟A.網(wǎng)管站將包含有設(shè)備配置信息的語法定義表保存在網(wǎng)管站中;B.網(wǎng)管站獲取設(shè)備的配置信息,按照網(wǎng)管站數(shù)據(jù)庫中語法定義表的語法定義,解析該設(shè)備的配置信息。該方法采用基于網(wǎng)管站上數(shù)據(jù)庫的語法定義表對配置信息進(jìn)行解析,以克服解析過程對被配置設(shè)備的依賴,并且通過采用語法定義表,達(dá)到減小解析工作量的目的。
文檔編號(hào)H04L12/24GK1601969SQ0315756
公開日2005年3月30日 申請日期2003年9月24日 優(yōu)先權(quán)日2003年9月24日
發(fā)明者雷海波 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
鸡西市| 佛冈县| 鹤山市| 高邑县| 威海市| 邵武市| 道孚县| 和林格尔县| 安庆市| 罗甸县| 内丘县| 青州市| 黄山市| 碌曲县| 黄大仙区| 廊坊市| 虞城县| 赞皇县| 永吉县| 大同县| 平昌县| 高淳县| 正安县| 岐山县| 西宁市| 广安市| 湘西| 新巴尔虎右旗| 永春县| 文成县| 彰武县| 会理县| 莒南县| 五台县| 什邡市| 大宁县| 芮城县| 尼玛县| 天津市| 巢湖市| 梅州市|