專利名稱:一種嵌入式網(wǎng)管命令行接口的命令回溯方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種可以使用嵌入式網(wǎng)管命令行接口(CLI-Command LineInterface)進(jìn)行配置的數(shù)據(jù)設(shè)備的命令執(zhí)行方法,尤其涉及多模式CLI命令的嵌入式網(wǎng)管命令匹配方法。
CLI命令執(zhí)行是模式相關(guān)的,在某個(gè)模式只能執(zhí)行該模式的命令。如果要執(zhí)行其他模式的命令則必須進(jìn)入該對(duì)應(yīng)的模式去執(zhí)行。如果是進(jìn)入本模式的上一層模式,一般使用命令exit,進(jìn)入本模式的下一層則要執(zhí)行具有模式的命令,這依賴于實(shí)際的命令樹。實(shí)際上為了簡(jiǎn)化命令輸入(特別是在配置文件中),一般允許直接執(zhí)行上層模式命令而不需要使用exit命令顯式進(jìn)入該模式。目前嵌入式網(wǎng)管的CLI在進(jìn)行命令匹配時(shí)有三種選擇自頂向下每次都從命令樹的根進(jìn)行匹配;完全的自底向上匹配;有限的自底向上的匹配。
自頂向下每次都從命令樹的根進(jìn)行匹配的效率是比較低的,特別是在命令比較多的情況下。命令的匹配其實(shí)是一個(gè)字符串匹配的過程,如果設(shè)備的命令多達(dá)幾百條就會(huì)嚴(yán)重影響命令的執(zhí)行速度。這是一個(gè)低效率的方法。
完全的自底向上匹配可以從本模式匹配開始,一直匹配到命令樹的根部,解決了匹配的效率和模式層次多的問題。但是這就造成在配置過程中模式的跳躍比較大,在線配置過程容易出現(xiàn)錯(cuò)誤和混亂。
有限的自底向上的匹配是允許執(zhí)行直接上層的命令,命令匹配從本模式開始,本模式?jīng)]有匹配就到本模式的上一層模式進(jìn)行匹配,如果仍然沒有匹配到就停止匹配。這種方式對(duì)于命令模式的層次不多,只有兩級(jí)時(shí)沒有問題,命令層次超過兩層就必須對(duì)命令在配置文件中的順序進(jìn)行安排,防止出現(xiàn)相鄰命令間的層次超過兩層。這顯然不利于配置文件的編寫。
為實(shí)現(xiàn)發(fā)明目的,本發(fā)明提出的命令回溯方法主要包括以下步驟1.在當(dāng)前節(jié)點(diǎn)下進(jìn)行命令匹配;2.如果命令匹配正確,修改相應(yīng)的命令節(jié)點(diǎn)信息,繼續(xù)下一個(gè)標(biāo)記的匹配;3.如果命令匹配失敗,在當(dāng)前節(jié)點(diǎn)下匹配不到命令節(jié)點(diǎn),根據(jù)命令節(jié)點(diǎn)保存的信息,回溯到當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn);1)若該節(jié)點(diǎn)的父節(jié)點(diǎn)存在,則在父節(jié)點(diǎn)下進(jìn)行命令匹配;2)若該節(jié)點(diǎn)的父節(jié)點(diǎn)不存在,則返回出錯(cuò)信息;4.如果命令匹配失敗,并且返回的錯(cuò)誤是其它錯(cuò)誤,根據(jù)當(dāng)前標(biāo)記的位置判斷是匹配不成功還是部分匹配成功;1)若部分匹配成功意味著命令樹中有重復(fù)的節(jié)點(diǎn)存在,回溯到當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)下對(duì)所有標(biāo)記重新進(jìn)行匹配;2)若是匹配不成功,返回錯(cuò)誤;采用有限制的自底向上的命令回溯的方法可以快速匹配命令,特別是在功能復(fù)雜,命令多且層次復(fù)雜的數(shù)據(jù)設(shè)備中。另外就是對(duì)配置文件的編寫不強(qiáng)加特殊限制,減輕設(shè)備維護(hù)的的負(fù)擔(dān)。同時(shí)由于限制命令回溯僅在配置文件中使用,保證了命令層次的嚴(yán)謹(jǐn)、清晰,消除了在線網(wǎng)絡(luò)維護(hù)過程中的層次跳躍。并且這是一個(gè)純軟件實(shí)現(xiàn)的方法,不會(huì)增加原有產(chǎn)品的成本。
圖1是命令樹結(jié)構(gòu)圖;圖2是正常情況下命令的匹配流程圖;圖3是回溯情況下命令的匹配流程圖。
圖2是正常情況下命令的匹配流程圖;典型的數(shù)據(jù)設(shè)備的命令都是一種樹型結(jié)構(gòu),正常情況下標(biāo)記的匹配過程如圖2所示,匹配過程從當(dāng)前節(jié)點(diǎn)(根節(jié)點(diǎn)或中間節(jié)點(diǎn))開始,1.首先判斷該標(biāo)記是否有歧義,也即該標(biāo)記同時(shí)是命令節(jié)點(diǎn)和參數(shù)節(jié)點(diǎn);1)與當(dāng)前節(jié)點(diǎn)下的命令子節(jié)點(diǎn)進(jìn)行完全匹配,若匹配成功則進(jìn)入3),若匹配不成功則進(jìn)入2);2)與當(dāng)前節(jié)點(diǎn)下的所有命令子節(jié)點(diǎn)進(jìn)行部分匹配,若匹配成功記錄節(jié)點(diǎn),進(jìn)入3)。
3)與當(dāng)前節(jié)點(diǎn)下的參數(shù)節(jié)點(diǎn)的關(guān)鍵字進(jìn)行匹配,若匹配成功則5);4)與當(dāng)前節(jié)點(diǎn)下的參數(shù)節(jié)點(diǎn)進(jìn)行部分匹配,匹配成功則5);5)根據(jù)匹配結(jié)果返回是正確或歧義錯(cuò)誤;2.如果返回正確并且此時(shí)還沒有匹配到一個(gè)中間模式節(jié)點(diǎn),進(jìn)一步進(jìn)行命令節(jié)點(diǎn)的判斷,進(jìn)入3;若返回正確并且此時(shí)已經(jīng)匹配到一個(gè)中間模式節(jié)點(diǎn),進(jìn)一步判斷是否是參數(shù)節(jié)點(diǎn),進(jìn)入4;3.命令節(jié)點(diǎn)判斷過程;1)與當(dāng)前節(jié)點(diǎn)下的命令子節(jié)點(diǎn)進(jìn)行完全匹配,若匹配成功,則將當(dāng)前節(jié)點(diǎn)指向該子節(jié)點(diǎn)并將標(biāo)記的類型修改為命令節(jié)點(diǎn)。若匹配不成功,則進(jìn)入2);2)與當(dāng)前子節(jié)點(diǎn)下的命令子節(jié)點(diǎn)進(jìn)行部分匹配,若匹配成功,且沒有超過一個(gè)子節(jié)點(diǎn),將當(dāng)前節(jié)點(diǎn)指向該子節(jié)點(diǎn)并將標(biāo)記的類型修改為命令節(jié)點(diǎn),進(jìn)入3),若匹配的子節(jié)點(diǎn)超過一個(gè),進(jìn)入3);3)根據(jù)匹配的結(jié)果返回正確或出錯(cuò)信息,進(jìn)入5;4.進(jìn)行參數(shù)節(jié)點(diǎn)判斷過程,然后進(jìn)入5;5.如果匹配過程執(zhí)行正確,添加節(jié)點(diǎn)鏈表,節(jié)點(diǎn)鏈表中的先后順序表示命令從根節(jié)點(diǎn)到當(dāng)前節(jié)點(diǎn)的匹配過程。
圖3是回溯情況下命令的匹配流程圖;命令的匹配首先從當(dāng)前命令節(jié)點(diǎn)下開始1.在當(dāng)前節(jié)點(diǎn)下進(jìn)行命令匹配,包括完全匹配和不完全匹配,與正常的命令匹配過程一樣。
2.如果命令匹配正確,修改節(jié)點(diǎn)鏈表中的信息,刪除冗余的節(jié)點(diǎn),增加當(dāng)前命令的節(jié)點(diǎn)鏈表。保證節(jié)點(diǎn)鏈表中沒有循環(huán)的節(jié)點(diǎn)。
3.如果命令匹配失敗,并且返回的錯(cuò)誤是找不到命令節(jié)點(diǎn),根據(jù)節(jié)點(diǎn)鏈表信息,獲得當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)的信息。
1)若當(dāng)前節(jié)點(diǎn)不是根節(jié)點(diǎn)并且該節(jié)點(diǎn)的父節(jié)點(diǎn)存在,則在父節(jié)點(diǎn)下進(jìn)行命令匹配。
2)若當(dāng)前節(jié)點(diǎn)是根節(jié)點(diǎn),則終止匹配過程,返回出錯(cuò)信息。
4.如果命令匹配失敗,并且返回的錯(cuò)誤是其它錯(cuò)誤,判斷當(dāng)前的標(biāo)記是否是第一個(gè)標(biāo)記,1)若不是第一個(gè)標(biāo)記,表示該標(biāo)記之前的標(biāo)記在當(dāng)前節(jié)點(diǎn)下匹配成功,而當(dāng)前的標(biāo)記匹配不成功,意味著命令樹中有重復(fù)的節(jié)點(diǎn)存在,將此標(biāo)記前的所有標(biāo)記置為未匹配狀態(tài),到當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)下重新進(jìn)行匹配。過程同上述3。
2)若此標(biāo)記是第一個(gè)標(biāo)記,表示命令匹配過程出錯(cuò),不再進(jìn)行命令匹配,返回錯(cuò)誤。
按照上述這種方式,可以在某個(gè)模式下執(zhí)行其上層模式的命令,可以回溯多層。
命令回溯只是在執(zhí)行配置文件的過程中起作用,在現(xiàn)配置時(shí)不起作用。因此設(shè)置了一個(gè)開關(guān)量,在執(zhí)行配置文件時(shí)打開,配置文件執(zhí)行過程結(jié)束后關(guān)閉該變量。這樣就可以限制命令回溯的僅發(fā)生在執(zhí)行配置文件地情況。
采用命令回溯執(zhí)行配置文件不對(duì)現(xiàn)有設(shè)備硬件改動(dòng),只是在軟件方面進(jìn)行改進(jìn)。采用這種方法的命令回溯可以快速進(jìn)行命令匹配,同時(shí)也簡(jiǎn)化了配置文件編寫的要求。在一定程度上減少了對(duì)設(shè)備維護(hù)人員的要求。
權(quán)利要求
1.一種嵌入式網(wǎng)管命令行接口的命令回溯方法,其特征在于包括以下步驟(1) 當(dāng)前節(jié)點(diǎn)下進(jìn)行命令匹配;(2)如果命令匹配正確,修改相應(yīng)的命令節(jié)點(diǎn)信息,繼續(xù)下一個(gè)標(biāo)記的匹配;(3)如果命令匹配失敗,在當(dāng)前節(jié)點(diǎn)下匹配不到命令節(jié)點(diǎn),根據(jù)命令節(jié)點(diǎn)保存的信息,回溯到當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn);(4)如果命令匹配失敗,并且返回的錯(cuò)誤是其它錯(cuò)誤,根據(jù)當(dāng)前標(biāo)記的位置判斷是匹配不成功還是部分匹配成功。
2.根據(jù)權(quán)利要求1所述的嵌入式網(wǎng)管命令行接口的命令回溯方法,其特征在于所述的步驟(3)中如果命令匹配失敗,在當(dāng)前節(jié)點(diǎn)下匹配不到命令節(jié)點(diǎn),根據(jù)命令節(jié)點(diǎn)保存的信息,回溯到當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)進(jìn)一步包括以下步驟1)若該節(jié)點(diǎn)的父節(jié)點(diǎn)存在,則在父節(jié)點(diǎn)下進(jìn)行命令匹配;2)若該節(jié)點(diǎn)的父節(jié)點(diǎn)不存在,則返回出錯(cuò)信息。
3.根據(jù)權(quán)利要求1所述的嵌入式網(wǎng)管命令行接口的命令回溯方法,其特征在于所述的步驟(4)中如果命令匹配失敗,并且返回的錯(cuò)誤是其它錯(cuò)誤,根據(jù)當(dāng)前標(biāo)記的位置判斷是匹配不成功還是部分匹配成功進(jìn)一步包括以下步驟1)若部分匹配成功意味著命令樹中有重復(fù)的節(jié)點(diǎn)存在,回溯到當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)下對(duì)所有標(biāo)記重新進(jìn)行匹配;2)若是匹配不成功,返回錯(cuò)誤。
全文摘要
本發(fā)明提出了一種嵌入式網(wǎng)管命令行接口的命令回溯方法。采用命令回溯執(zhí)行配置文件不對(duì)現(xiàn)有設(shè)備硬件改動(dòng),只是在軟件方面進(jìn)行改進(jìn)。采用這種方法的命令回溯可以快速進(jìn)行命令匹配,同時(shí)也簡(jiǎn)化了配置文件編寫的要求。在一定程度上減少了對(duì)設(shè)備維護(hù)人員的要求。本發(fā)明在保證嚴(yán)謹(jǐn)?shù)拿顚哟蔚耐瑫r(shí)實(shí)現(xiàn)配置文件中命令的快速匹配和回溯,克服了配置文件編寫的格式要求缺點(diǎn),使得配置文件的內(nèi)容更靈活,格式更簡(jiǎn)單。
文檔編號(hào)G06F9/45GK1407451SQ0112661
公開日2003年4月2日 申請(qǐng)日期2001年8月29日 優(yōu)先權(quán)日2001年8月29日
發(fā)明者邵波, 楊曉鋒, 孫圣強(qiáng) 申請(qǐng)人:深圳市中興通訊股份有限公司上海第二研究所