專利名稱:一種識(shí)別終端命令行的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種識(shí)別命令行的方法和裝置,特別是涉及一種識(shí)別終端命令行的方法和裝置。
背景技術(shù):
終端在各類Unix主機(jī)和通訊系統(tǒng)中有著廣泛的應(yīng)用,通過(guò)終端進(jìn)行操作和管理具有直接、安全可靠、資源占用小、效率高等優(yōu)點(diǎn)。終端主要由用于輸入的鍵盤(pán)和用于輸出的顯示器組成,顯示器為字符模式,有一定數(shù)量的行和列,其本身沒(méi)有處理能力,僅僅是一種文字模式的輸入輸出媒介。終端可以是硬件的設(shè)備,通過(guò)通訊線路與主機(jī)系統(tǒng)連接起來(lái);也可以是軟件的虛擬終端,例如個(gè)人電腦上運(yùn)行的終端軟件,可以通過(guò)網(wǎng)絡(luò)登錄到連接的一臺(tái)或多臺(tái)主機(jī)。
終端多與大型的主機(jī)系統(tǒng)或核心通訊設(shè)備連接,這就對(duì)其操作的穩(wěn)定性和安全性有很高的要求,因此要對(duì)用戶的終端操作進(jìn)行審計(jì),并對(duì)高危操作的執(zhí)行進(jìn)行限制。終端的操作主要分為命令行和實(shí)時(shí)交互兩種方式,對(duì)這兩種方式進(jìn)行審計(jì)的方法并不相同對(duì)實(shí)時(shí)交互方式可以簡(jiǎn)單的把終端輸出進(jìn)行回放;對(duì)命令行方式,希望能夠記錄用戶執(zhí)行的每一條命令以及相應(yīng)的執(zhí)行結(jié)果。而對(duì)命令行方式進(jìn)行審計(jì)和限制,首先就必須實(shí)現(xiàn)識(shí)別命令行。
現(xiàn)有的識(shí)別命令行的方法有三類第一類的方法是,通過(guò)終端方式進(jìn)行工作,把經(jīng)過(guò)終端的輸入數(shù)據(jù)和輸出數(shù)據(jù)進(jìn)行記錄,需要時(shí)對(duì)記錄進(jìn)行重放,從中尋找需要的信息和操作。此類方法比較原始,缺點(diǎn)在于只是對(duì)終端數(shù)據(jù)本身進(jìn)行簡(jiǎn)單記錄和回放,只能看見(jiàn)具體的操作符合,無(wú)法直接看到所有命令的列表,審計(jì)的效率很低,而且通過(guò)上述方法無(wú)法實(shí)時(shí)阻斷高危命令。
第二類的方法是,在主機(jī)的操作系統(tǒng)中安裝針對(duì)該操作系統(tǒng)的外殼程序,由于該程序是作為操作系統(tǒng)的一部分運(yùn)行的,所以用戶的操作首先通過(guò)操作系統(tǒng)的識(shí)別和判斷,操作系統(tǒng)將用戶輸入轉(zhuǎn)為系統(tǒng)可執(zhí)行的操作命令,而操作系統(tǒng)在執(zhí)行上述命令前,先通過(guò)外殼程序把命令行寫(xiě)入日志文件,以便進(jìn)一步的審計(jì)和控制。此類方法的缺點(diǎn)在于需要對(duì)主機(jī)運(yùn)行的操作系統(tǒng)進(jìn)行修改,而且不同的操作系統(tǒng)修改的內(nèi)容相差很大,因此工作量大、維護(hù)復(fù)雜,風(fēng)險(xiǎn)較高,實(shí)施起來(lái)困難很大;當(dāng)涉及多操作系統(tǒng)時(shí),外殼程序的通用性很低。
第三類的方法是,對(duì)終端的輸出數(shù)據(jù)經(jīng)過(guò)模擬和轉(zhuǎn)換,得到最終顯示的各行文字,然后將顯示的文字連接起來(lái)寫(xiě)入一個(gè)大的文本文件,在各行上尋找主機(jī)的命令提示符,如果有提示符就認(rèn)為該行是一個(gè)命令,然后把提示符后的內(nèi)容作為命令記錄下來(lái)。此類方法依賴特定的命令提示符,但是由于提示符可以通過(guò)操作系統(tǒng)的設(shè)置而改變,或有時(shí)命令提示符也可能僅僅以文本的形式出現(xiàn),因此,此類方法的可靠性比較差。
在上述方法中,現(xiàn)有技術(shù)多采用第二類或第三類方法,所以存在以下的缺點(diǎn)和問(wèn)題識(shí)別的可靠性較差,或?qū)崿F(xiàn)復(fù)雜、成本高、通用性差??煽啃耘c低成本、高通用性難以同時(shí)實(shí)現(xiàn)。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種識(shí)別終端命令行的方法,以解決上述現(xiàn)有技術(shù)中存在的識(shí)別的可靠性較差,或?qū)崿F(xiàn)復(fù)雜、成本高、通用性差的缺點(diǎn)和問(wèn)題,實(shí)現(xiàn)低成本、高通用性同時(shí)確保識(shí)別的可靠性。
本發(fā)明還提供一種識(shí)別終端命令行的的裝置。
本發(fā)明提供的識(shí)別終端命令行的方法,包括下列步驟獲取終端與主機(jī)之間的輸入數(shù)據(jù)和輸出數(shù)據(jù);將輸出數(shù)據(jù)通過(guò)模擬終端進(jìn)行模擬,獲取輸出內(nèi)容,所述輸出內(nèi)容包括顯示內(nèi)容和終端狀態(tài);結(jié)合輸入數(shù)據(jù)對(duì)輸出內(nèi)容進(jìn)行識(shí)別,得到終端命令行。
通過(guò)網(wǎng)絡(luò)偵聽(tīng)或通訊線路偵聽(tīng)的方法或軟件轉(zhuǎn)發(fā)的方法獲取終端與主機(jī)之間的輸入數(shù)據(jù)和輸出數(shù)據(jù)。
按照下述步驟結(jié)合輸入數(shù)據(jù)對(duì)輸出內(nèi)容進(jìn)行識(shí)別
查看輸出內(nèi)容;當(dāng)輸出內(nèi)容出現(xiàn)命令提示符時(shí),查看是否有輸入數(shù)據(jù);若有輸入數(shù)據(jù),則認(rèn)為輸出內(nèi)容中命令提示符后的顯示內(nèi)容為命令行;當(dāng)輸入數(shù)據(jù)出現(xiàn)命令確認(rèn)鍵、命令執(zhí)行鍵或命令取消鍵時(shí),則認(rèn)為一個(gè)命令行結(jié)束。
優(yōu)選的,按照下述步驟結(jié)合輸入數(shù)據(jù)對(duì)輸出內(nèi)容進(jìn)行識(shí)別建立一個(gè)命令庫(kù),命令庫(kù)中包含操作系統(tǒng)所有的命令;查看輸出內(nèi)容;當(dāng)輸出內(nèi)容出現(xiàn)命令提示符時(shí),查看是否有輸入數(shù)據(jù);若有輸入數(shù)據(jù),則將命令提示符后顯示內(nèi)容的第一個(gè)字段與命令庫(kù)中的命令進(jìn)行匹配;若有可以匹配的命令,則認(rèn)為命令提示符后的顯示內(nèi)容為命令行;當(dāng)輸入數(shù)據(jù)出現(xiàn)命令確認(rèn)鍵、命令執(zhí)行鍵或命令取消鍵時(shí),則認(rèn)為一個(gè)命令行結(jié)束。
優(yōu)選的,按照下述步驟結(jié)合輸入數(shù)據(jù)對(duì)輸出內(nèi)容進(jìn)行識(shí)別等待輸入數(shù)據(jù)或輸出內(nèi)容;獲得當(dāng)前命令識(shí)別狀態(tài);當(dāng)命令識(shí)別狀態(tài)為命令輸入狀態(tài)時(shí),則認(rèn)為輸出內(nèi)容的顯示內(nèi)容為命令行;當(dāng)輸入數(shù)據(jù)出現(xiàn)命令確認(rèn)鍵、命令執(zhí)行鍵或命令取消鍵時(shí),則認(rèn)為一個(gè)命令行結(jié)束。
按照下述狀態(tài)轉(zhuǎn)換步驟獲得當(dāng)前命令識(shí)別狀態(tài)使缺省的狀態(tài)為程序輸出狀態(tài);當(dāng)接收到輸入字符時(shí),狀態(tài)轉(zhuǎn)為命令輸入狀態(tài),進(jìn)一步檢查輸入數(shù)據(jù),若輸入數(shù)據(jù)為命令確認(rèn)字符、命令執(zhí)行字符或命令取消字符時(shí),狀態(tài)轉(zhuǎn)為程序輸出狀態(tài)。
優(yōu)選的,按照下述狀態(tài)轉(zhuǎn)換步驟獲得當(dāng)前命令識(shí)別狀態(tài)使缺省的狀態(tài)為程序輸出狀態(tài);當(dāng)接收到輸入字符時(shí),狀態(tài)轉(zhuǎn)為命令輸入狀態(tài);在命令輸入狀態(tài)下進(jìn)一步檢查輸入數(shù)據(jù),若輸入數(shù)據(jù)為幫助字符,狀態(tài)轉(zhuǎn)為命令提示狀態(tài);在命令輸入狀態(tài)下進(jìn)一步檢查輸入數(shù)據(jù),若輸入數(shù)據(jù)為命令確認(rèn)字符、命令執(zhí)行字符或命令取消字符時(shí),狀態(tài)轉(zhuǎn)為程序輸出狀態(tài);在命令提示狀態(tài)下,當(dāng)輸入數(shù)據(jù)為非幫助字符時(shí),狀態(tài)轉(zhuǎn)為命令輸入狀態(tài)。
優(yōu)選的,按照下述狀態(tài)轉(zhuǎn)換步驟獲得當(dāng)前命令識(shí)別狀態(tài)使缺省的狀態(tài)為程序輸出狀態(tài);當(dāng)輸出數(shù)據(jù)為進(jìn)入交互狀態(tài)的特征序列時(shí),狀態(tài)轉(zhuǎn)為交互式應(yīng)用狀態(tài);當(dāng)接收到輸入字符時(shí),狀態(tài)轉(zhuǎn)為命令輸入狀態(tài);在命令輸入狀態(tài)下進(jìn)一步檢查輸入數(shù)據(jù),若輸入數(shù)據(jù)為幫助字符,狀態(tài)轉(zhuǎn)為命令提示狀態(tài);在命令輸入狀態(tài)下進(jìn)一步檢查輸入數(shù)據(jù),若輸入數(shù)據(jù)為命令確認(rèn)字符、命令執(zhí)行字符或命令取消字符時(shí),狀態(tài)轉(zhuǎn)為程序輸出狀態(tài);在命令提示狀態(tài)下,當(dāng)輸入數(shù)據(jù)為非幫助字符時(shí),狀態(tài)轉(zhuǎn)為命令輸入狀態(tài);在交互式應(yīng)用狀態(tài)下,當(dāng)輸出數(shù)據(jù)為退出交互狀態(tài)的特征序列時(shí),狀態(tài)轉(zhuǎn)為程序輸出狀態(tài)。
所述幫助字符為T(mén)AB鍵或“?”鍵。
所述進(jìn)入交互狀態(tài)的特征序列為VT102及兼容終端的設(shè)置模式47號(hào),和/或VT102及兼容終端的設(shè)置模式1047號(hào),和/或VT102及兼容終端的設(shè)置模式1049號(hào),和/或VT100及兼容終端的設(shè)置模式1號(hào)。
所述退出交互狀態(tài)的特征序列為VT102及兼容終端的清除模式47號(hào),和/或VT102及兼容終端的清除模式1047號(hào),和/或VT102及兼容終端的清除模式1049號(hào),和/或VT100及兼容終端的清除模式1號(hào)。
本發(fā)明還公開(kāi)了一種基于上述方法的識(shí)別終端命令行的裝置,所述裝置包括終端數(shù)據(jù)捕獲裝置,負(fù)責(zé)獲取終端與主機(jī)之間的輸入數(shù)據(jù)和輸出數(shù)據(jù);終端模擬裝置,輸出數(shù)據(jù)通過(guò)模擬終端的模擬,獲取輸出內(nèi)容;
命令識(shí)別裝置,結(jié)合輸入數(shù)據(jù)對(duì)輸出內(nèi)容進(jìn)行識(shí)別,得到終端命令行。
所述命令識(shí)別裝置包括輸出內(nèi)容判別子裝置,查看輸出內(nèi)容,模擬終端的輸出內(nèi)容出現(xiàn)命令提示符時(shí),提示輸入判別子裝置;輸入判別子裝置,根據(jù)輸出內(nèi)容判別子裝置的提示,獲取命令行,即提示出現(xiàn)命令提示符且終端有輸入時(shí),則認(rèn)為提示符后的模擬終端的輸出內(nèi)容的顯示內(nèi)容為命令行,當(dāng)輸入數(shù)據(jù)出現(xiàn)命令確認(rèn)鍵、命令執(zhí)行鍵或命令取消鍵時(shí),則認(rèn)為一個(gè)命令行結(jié)束。
優(yōu)選的,所述命令識(shí)別裝置包括命令庫(kù),命令庫(kù)中包含系統(tǒng)所有的命令;輸出內(nèi)容判別子裝置,查看輸出內(nèi)容,模擬終端的輸出內(nèi)容出現(xiàn)命令提示符時(shí),提示輸入判別子裝置;輸入判別子裝置,根據(jù)輸出內(nèi)容判別子裝置的提示,獲取命令行,即提示出現(xiàn)命令提示符時(shí),則將命令提示符后模擬終端顯示的第一個(gè)字段與命令庫(kù)中的命令進(jìn)行匹配,若匹配則認(rèn)為提示符后的模擬終端的輸出內(nèi)容的顯示內(nèi)容為命令行,當(dāng)輸入數(shù)據(jù)出現(xiàn)命令確認(rèn)鍵、或命令執(zhí)行鍵或命令取消鍵時(shí),則認(rèn)為一個(gè)命令行結(jié)束。
優(yōu)選的,所述命令識(shí)別裝置包括輸入判別子裝置,查看終端是否有輸入;命令識(shí)別狀態(tài)確定子裝置,根據(jù)輸入數(shù)據(jù)和輸出數(shù)據(jù)來(lái)判定當(dāng)前命令識(shí)別狀態(tài);獲取命令行子裝置,當(dāng)前命令識(shí)別狀態(tài)為命令輸入狀態(tài)時(shí),則認(rèn)為模擬終端的輸出內(nèi)容的顯示內(nèi)容為命令行,輸入數(shù)據(jù)出現(xiàn)命令確認(rèn)鍵或命令執(zhí)行鍵時(shí),則認(rèn)為一個(gè)命令行結(jié)束,獲取上述命令行并保存;輸入數(shù)據(jù)出現(xiàn)命令取消鍵時(shí),認(rèn)為一個(gè)命令行結(jié)束,但不保存上述命令行。
所述命令識(shí)別狀態(tài)包括程序輸出狀態(tài),表示這時(shí)終端正在產(chǎn)生程序的結(jié)果輸出;命令輸入狀態(tài),表示用戶正在輸入命令,從用戶在程序輸出狀態(tài)下按鍵輸入開(kāi)始,直到用戶確認(rèn)或取消輸入。
優(yōu)選的,所述命令識(shí)別狀態(tài)包括程序輸出狀態(tài),表示這時(shí)終端正在產(chǎn)生程序的結(jié)果輸出;命令輸入狀態(tài),表示用戶正在輸入命令,從用戶在程序輸出狀態(tài)下按鍵輸入開(kāi)始,直到用戶確認(rèn)或取消輸入;命令提示狀態(tài),表示目前處于命令補(bǔ)全的輔助命令輸入狀態(tài)。
優(yōu)選的,所述命令識(shí)別狀態(tài)包括程序輸出狀態(tài),表示這時(shí)終端正在產(chǎn)生程序的結(jié)果輸出;命令輸入狀態(tài),表示用戶正在輸入命令,從用戶在程序輸出狀態(tài)下按鍵輸入開(kāi)始,直到用戶確認(rèn)或取消輸入;交互式應(yīng)用狀態(tài),表示這時(shí)計(jì)算機(jī)處于運(yùn)行一些全屏交互程序的交互應(yīng)用狀態(tài);命令提示狀態(tài),表示目前處于命令補(bǔ)全的輔助命令輸入狀態(tài)。
與現(xiàn)有技術(shù)相比,本發(fā)明同時(shí)具有實(shí)現(xiàn)簡(jiǎn)單、成本低、通用性優(yōu)良、高可靠性的優(yōu)點(diǎn),在實(shí)現(xiàn)低成本、高通用性的同時(shí)確保了識(shí)別的可靠性,具體如下1、實(shí)現(xiàn)簡(jiǎn)單、成本低;由于上述的方法和裝置首先獲取終端與主機(jī)之間的輸入數(shù)據(jù)和輸出數(shù)據(jù),然后模擬輸出數(shù)據(jù)獲取輸出內(nèi)容,其后結(jié)合輸入數(shù)據(jù)對(duì)輸出內(nèi)容進(jìn)行識(shí)別,得到終端命令。上述應(yīng)用和安裝都獨(dú)立于主機(jī)的操作系統(tǒng),無(wú)需對(duì)每臺(tái)計(jì)算機(jī)上的軟件進(jìn)行修改,復(fù)雜度和風(fēng)險(xiǎn)都比較低,所以實(shí)現(xiàn)簡(jiǎn)單、成本低2、通用性優(yōu)良;由于上述的方法和裝置操作的數(shù)據(jù)基礎(chǔ)是終端與主機(jī)的輸入和輸出的原始數(shù)據(jù),不涉及操作系統(tǒng)或應(yīng)用軟件的數(shù)據(jù)格式,因此可以比較方便的應(yīng)用于各種操作系統(tǒng)和應(yīng)用軟件的環(huán)境下,具有優(yōu)良的通用性。
3、高可靠性由于上述的方法和裝置不是僅僅針對(duì)輸入數(shù)據(jù)或輸出數(shù)據(jù)進(jìn)行識(shí)別,而是獲取終端與主機(jī)之間的輸入數(shù)據(jù)和輸出數(shù)據(jù)后,對(duì)輸出數(shù)據(jù)進(jìn)行模擬顯示,獲取輸出內(nèi)容,然后結(jié)合輸入數(shù)據(jù)對(duì)輸出內(nèi)容進(jìn)行識(shí)別,而且公開(kāi)了多種結(jié)合識(shí)別的方法,因此實(shí)現(xiàn)的識(shí)別具有很高的可靠性。
圖1為本發(fā)明所述的識(shí)別命令行的方法的基本步驟流程圖;圖2為實(shí)施例1中本發(fā)明所述的識(shí)別命令行的方法的步驟流程圖;圖3為實(shí)施例2中本發(fā)明所述的識(shí)別命令行的裝置結(jié)構(gòu)框圖;圖4為實(shí)施例3中本發(fā)明所述的識(shí)別命令行的方法的步驟流程圖;圖5為實(shí)施例4是本發(fā)明所述的識(shí)別命令行的裝置結(jié)構(gòu)框圖;圖6為本發(fā)明所述的識(shí)別命令行的方法的實(shí)施例5的步驟流程圖;圖7為本發(fā)明所述的識(shí)別命令行的實(shí)施例6的裝置結(jié)構(gòu)框圖;圖8為判定當(dāng)前命令識(shí)別狀態(tài)的方法一步驟流程圖;圖9為判定當(dāng)前命令識(shí)別狀態(tài)的方法二步驟流程圖;圖10為判定當(dāng)前命令識(shí)別狀態(tài)的方法三步驟流程圖。
具體實(shí)施例方式
為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。
本發(fā)明公開(kāi)了一種識(shí)別終端命令行的方法和裝置,所述方法和裝置是基于以下的步驟實(shí)現(xiàn)的參照?qǐng)D1,首先,獲取終端與主機(jī)之間的輸入數(shù)據(jù)和輸出數(shù)據(jù),截獲或偵聽(tīng)終端用戶和主機(jī)之間的通訊數(shù)據(jù),獲取終端的輸入和輸出數(shù)據(jù)流。根據(jù)終端類型和部署環(huán)境不同具體可以可通過(guò)網(wǎng)絡(luò)偵聽(tīng)、通訊線路偵聽(tīng)或軟件轉(zhuǎn)發(fā)的方式實(shí)現(xiàn)。
然后,使用模擬終端對(duì)輸出數(shù)據(jù)進(jìn)行模擬,獲取輸出內(nèi)容,可見(jiàn)模擬終端是將輸出數(shù)據(jù)轉(zhuǎn)為輸出內(nèi)容的轉(zhuǎn)換器,常見(jiàn)的模擬終端有VT102及兼容模擬終端、VT100及兼容模擬終端等。模擬終端的工作原理和步驟是模擬終端內(nèi)部主要有維護(hù)終端狀態(tài)和輸出緩沖區(qū)兩個(gè)主要狀態(tài)終端狀態(tài)由當(dāng)前終端的大小、光標(biāo)所在的位置、當(dāng)前屏幕等組成;輸出緩沖區(qū)中保存當(dāng)前光標(biāo)所在行直到換行符之前的內(nèi)容。模擬的過(guò)程主循環(huán)是圍繞每個(gè)終端輸出字符進(jìn)行的,主循環(huán)的正常退出條件是終端被關(guān)閉。針對(duì)讀出的每個(gè)輸出字符,模擬終端判斷其類型,可屬于一般字符、簡(jiǎn)單控制字符和終端控制序列三種情況。一般字符主要包括字母、數(shù)字和各種符號(hào)以及空格;簡(jiǎn)單控制字符是在標(biāo)準(zhǔn)ASCII碼中定義的,實(shí)現(xiàn)簡(jiǎn)單的終端控制功能的控制字符,如退格、回車(chē)、換行、制表符等;終端控制序列是VT102終端協(xié)議中定義的,由一系列字符組成,用于對(duì)終端進(jìn)行復(fù)雜的狀態(tài)和功能控制如設(shè)置光標(biāo)位置和狀態(tài)、設(shè)置字符和背景顏色、滾屏、對(duì)整行整段文字進(jìn)行刪除、屏幕切換等。各種輸出字符和序列會(huì)對(duì)終端的狀態(tài)和輸出緩沖區(qū)產(chǎn)生影響,發(fā)生屏幕切換、光標(biāo)位置變更及內(nèi)容修改等作用。這些影響通常會(huì)同時(shí)發(fā)生,如輸出一個(gè)“a”字符,會(huì)把終端當(dāng)前光標(biāo)位置的字符修改為“a”,然后把光標(biāo)向前移動(dòng)一個(gè)位置;如果之前光標(biāo)已經(jīng)到達(dá)了終端的最后一列,則光標(biāo)會(huì)行進(jìn)到下一行的第一列;同時(shí)如果之前光標(biāo)已經(jīng)到達(dá)了終端的最后一行,則會(huì)產(chǎn)生一個(gè)單行向上滾屏的動(dòng)作,清出新的一行以后把光標(biāo)設(shè)置到新行的第一列。模擬終端依據(jù)這些規(guī)則,根據(jù)讀到的每個(gè)字符來(lái)更新終端的狀態(tài)和輸出緩沖區(qū),最終得到輸出內(nèi)容。輸出內(nèi)容包括顯示內(nèi)容和終端狀態(tài)。
結(jié)合輸入數(shù)據(jù)對(duì)輸出內(nèi)容進(jìn)行識(shí)別,從現(xiàn)有的技術(shù)看,實(shí)現(xiàn)識(shí)別的途徑有這么幾種對(duì)輸入數(shù)據(jù)或輸出數(shù)據(jù)進(jìn)行識(shí)別;將輸入數(shù)據(jù)轉(zhuǎn)換為輸入內(nèi)容進(jìn)行識(shí)別;將輸出數(shù)據(jù)轉(zhuǎn)換為輸出內(nèi)容進(jìn)行識(shí)別。本發(fā)明公開(kāi)的方案是結(jié)合輸入數(shù)據(jù)對(duì)經(jīng)過(guò)模擬轉(zhuǎn)換輸出數(shù)據(jù)后得到的輸出內(nèi)容進(jìn)行識(shí)別。這種結(jié)合識(shí)別的方法可以低成本、高效的實(shí)現(xiàn)識(shí)別且具有良好的通用性。
通過(guò)上述步驟,最終得到終端命令行??梢源鎯?chǔ)識(shí)別得到的命令行,也可以提供給其他系統(tǒng)進(jìn)行進(jìn)一步的處理,如命令審計(jì)、危險(xiǎn)命令的阻斷等等。
以下的實(shí)施例均是基于上述步驟或原理,并公開(kāi)了幾種結(jié)合輸入數(shù)據(jù)對(duì)輸出內(nèi)容進(jìn)行識(shí)別的具體方案。
實(shí)施例1參照?qǐng)D2,本實(shí)施例公開(kāi)了一種識(shí)別終端命令行的方法的具體方案。首先,獲取終端與主機(jī)之間的輸入數(shù)據(jù)和輸出數(shù)據(jù)。然后將輸出數(shù)據(jù)通過(guò)模擬終端進(jìn)行模擬,獲取輸出內(nèi)容,所述輸出內(nèi)容包括顯示內(nèi)容和終端狀態(tài)。結(jié)合輸入數(shù)據(jù)對(duì)輸出內(nèi)容進(jìn)行識(shí)別具體方法是模擬終端的輸出內(nèi)容出現(xiàn)命令提示符時(shí),查看終端是否有輸入數(shù)據(jù);若無(wú)輸入數(shù)據(jù)則繼續(xù)查看輸出內(nèi)容,若終端有輸入,則認(rèn)為提示符后的輸出內(nèi)容的顯示內(nèi)容為命令行;記錄提示符后的模擬終端的顯示內(nèi)容,同時(shí)查看輸入數(shù)據(jù),當(dāng)輸入數(shù)據(jù)出現(xiàn)命令確認(rèn)鍵、命令執(zhí)行鍵或命令取消鍵時(shí),則認(rèn)為一個(gè)命令行結(jié)束。通過(guò)上述步驟,識(shí)別得到終端命令行。
實(shí)施例2參照?qǐng)D3,這是一種基于實(shí)施例1方案的識(shí)別終端命令行的裝置。該裝置包括終端數(shù)據(jù)捕獲裝置31、終端模擬裝置32和命令識(shí)別裝置33,其中命令識(shí)別裝置33包括輸出內(nèi)容判別子裝置34和輸入判別子裝置35。
終端數(shù)據(jù)捕獲裝置31負(fù)責(zé)獲取終端與主機(jī)之間的輸入和輸出數(shù)據(jù)101,將獲取的輸入和輸出數(shù)據(jù)101分為輸出數(shù)據(jù)102和輸入數(shù)據(jù)103;終端模擬裝置32對(duì)輸出數(shù)據(jù)102模擬,獲取終端的輸出內(nèi)容104,所述輸出內(nèi)容包括顯示內(nèi)容和終端狀態(tài);命令識(shí)別裝置33結(jié)合輸出內(nèi)容104和輸入數(shù)據(jù)103進(jìn)行識(shí)別,其中輸出內(nèi)容判別子裝置34,查看輸出內(nèi)容104,模擬終端的輸出內(nèi)容104出現(xiàn)命令提示符時(shí),提示輸入判別子裝置35;輸入判別子裝置35根據(jù)輸出內(nèi)容判別子裝置34的提示,當(dāng)模擬終端的輸出內(nèi)容104出現(xiàn)命令提示符時(shí),則查看是否有輸入數(shù)據(jù)103;若無(wú)輸入數(shù)據(jù)103則繼續(xù)等待提示,若終端有輸入,則認(rèn)為提示符后的模擬終端的輸出內(nèi)容104的顯示內(nèi)容為命令行;記錄提示符后的模擬終端的輸出內(nèi)容104,當(dāng)輸入數(shù)據(jù)103出現(xiàn)命令確認(rèn)鍵、命令執(zhí)行鍵或命令取消鍵時(shí),則認(rèn)為一個(gè)命令行結(jié)束。通過(guò)上述步驟,識(shí)別得到終端命令行105。
實(shí)施例3參照?qǐng)D4,本實(shí)施例公開(kāi)了另一種識(shí)別終端命令行的方法的具體方案。首先,獲取終端與主機(jī)之間的輸入數(shù)據(jù)和輸出數(shù)據(jù)。然后將輸出數(shù)據(jù)通過(guò)模擬終端進(jìn)行模擬,獲取輸出內(nèi)容,所述輸出內(nèi)容包括顯示內(nèi)容和終端狀態(tài)。結(jié)合輸入數(shù)據(jù)對(duì)輸出內(nèi)容進(jìn)行識(shí)別具體方法是建立一個(gè)命令庫(kù),命令庫(kù)中包含操作系統(tǒng)所有的命令;查看模擬終端的輸出內(nèi)容;輸出內(nèi)容出現(xiàn)命令提示符時(shí),查看終端是否有輸入;若無(wú)輸入數(shù)據(jù)則繼續(xù)查看輸出內(nèi)容;若終端有輸入,則將命令提示符后模擬終端顯示的第一個(gè)字段與命令庫(kù)中的命令進(jìn)行匹配;若無(wú)匹配的命令則繼續(xù)查看輸出內(nèi)容;若有可以匹配的命令,則認(rèn)為提示符后的輸出內(nèi)容的顯示內(nèi)容為命令行;記錄提示符后的顯示內(nèi)容,同時(shí)查看輸入數(shù)據(jù),當(dāng)輸入數(shù)據(jù)出現(xiàn)命令確認(rèn)鍵、命令執(zhí)行鍵或命令取消鍵時(shí),則認(rèn)為一個(gè)命令行結(jié)束。通過(guò)上述步驟,識(shí)別得到終端命令行。
實(shí)施例4參照?qǐng)D5,這是一種基于實(shí)施例3方案的識(shí)別終端命令行的裝置。該裝置包括終端數(shù)據(jù)捕獲裝置51、終端模擬裝置52和命令識(shí)別裝置53,其中命令識(shí)別裝置53包括輸出內(nèi)容判別子裝置54、輸入判別子裝置55和命令庫(kù)56。
終端數(shù)據(jù)捕獲裝置51負(fù)責(zé)獲取終端與主機(jī)之間的輸入和輸出數(shù)據(jù)101,將獲取的輸入和輸出數(shù)據(jù)101分為輸出數(shù)據(jù)102和輸入數(shù)據(jù)103;終端模擬裝置52對(duì)輸出數(shù)據(jù)102模擬,獲取終端的輸出內(nèi)容104,所述輸出內(nèi)容包括顯示內(nèi)容和終端狀態(tài);命令識(shí)別裝置53結(jié)合輸出內(nèi)容104和輸入數(shù)據(jù)103進(jìn)行識(shí)別,其中輸出內(nèi)容判別子裝置54,查看輸出內(nèi)容104,模擬終端的輸出內(nèi)容104出現(xiàn)命令提示符時(shí),提示輸入判別子裝置55;輸入判別子裝置55根據(jù)輸出內(nèi)容判別子裝置34的提示,當(dāng)模擬終端的輸出內(nèi)容104出現(xiàn)命令提示符時(shí),則查看是否有輸入數(shù)據(jù)103;若無(wú)輸入數(shù)據(jù)103則繼續(xù)等待提示,若終端有輸入,則反饋給輸出內(nèi)容判別子裝置54,輸出內(nèi)容判別子裝置54則將命令提示符后模擬終端顯示的第一個(gè)字段與命令庫(kù)56中的命令進(jìn)行匹配;若無(wú)匹配的命令則繼續(xù)查看輸出內(nèi)容104;若有可以匹配的命令,則認(rèn)為提示符后的模擬終端的輸出內(nèi)容104的顯示內(nèi)容為命令行;記錄提示符后的模擬終端的顯示內(nèi)容,同時(shí)輸入判別子裝置55查看輸入數(shù)據(jù)103,當(dāng)輸入數(shù)據(jù)103出現(xiàn)命令確認(rèn)鍵、命令執(zhí)行鍵或命令取消鍵時(shí),通知輸出內(nèi)容判別子裝置54一個(gè)命令行結(jié)束。通過(guò)上述步驟,識(shí)別得到終端命令行105。
實(shí)施例5參照?qǐng)D6、8、9、10,本實(shí)施例公開(kāi)了一種識(shí)別終端命令行的方法的具體方案。首先,獲取終端與主機(jī)之間的輸入數(shù)據(jù)和輸出數(shù)據(jù)。然后將輸出數(shù)據(jù)通過(guò)模擬終端進(jìn)行模擬,獲取輸出內(nèi)容,所述輸出內(nèi)容包括顯示內(nèi)容和終端狀態(tài)。
等待輸入數(shù)據(jù)或輸出內(nèi)容;當(dāng)有輸入時(shí),根據(jù)輸入數(shù)據(jù)和輸出數(shù)據(jù)來(lái)判定當(dāng)前命令識(shí)別的狀態(tài),關(guān)于判定當(dāng)前命令識(shí)別的狀態(tài)的方法有以下三種方法,適用于不同的具體應(yīng)用環(huán)境方法一,參照?qǐng)D8,設(shè)缺省的狀態(tài)為程序輸出狀態(tài);當(dāng)收到輸入數(shù)據(jù)802時(shí),狀態(tài)轉(zhuǎn)為命令輸入狀態(tài),直至該輸入數(shù)據(jù)或之后的輸入數(shù)據(jù)為命令確認(rèn)字符、命令執(zhí)行字符或命令取消字符203時(shí),狀態(tài)轉(zhuǎn)為程序輸出狀態(tài)。
為了便于理解本實(shí)施例中的方法一,以下面的操作為例當(dāng)用戶在命令提示符“[user@host dir]$”之后,輸入命令“1s-1”,并按回車(chē)執(zhí)行;計(jì)算機(jī)執(zhí)行1s程序,顯示輸出結(jié)果,然后再顯示命令提示符“[user@host dir]$”。
對(duì)于上述命令輸入,從用戶按鍵開(kāi)始,命令識(shí)別的狀態(tài)從程序輸出狀態(tài)變成命令輸入狀態(tài)。這時(shí)終端模擬程序的顯示內(nèi)容為“[user@host dir]$”,同時(shí)記錄提示符長(zhǎng)度為17(包括尾部的空格)。等到用戶按下回車(chē)鍵時(shí),終端模擬程序的顯示內(nèi)容已經(jīng)成為“[user@host dir]$1s-1”,這時(shí)就認(rèn)為緩沖區(qū)內(nèi)第17個(gè)字符后的顯示內(nèi)容就是用戶輸入的命令并予以記錄;然后把命令識(shí)別的狀態(tài)修改為程序輸出狀態(tài),此后顯示的從該命令執(zhí)行到下一個(gè)提示符出現(xiàn)前的終端輸出內(nèi)容都看作程序的輸出直接記錄,但下一個(gè)提示符本身由于該行尚未被換行字符終止所以不會(huì)立即輸出。記錄完識(shí)別的命令行,此時(shí)命令識(shí)別的狀態(tài)又回到程序輸出狀態(tài),等待識(shí)別下一個(gè)輸入的命令行。
如果上例的輸入過(guò)程為,首先輸入“1-1”,然后按CTRL-A組合鍵把光標(biāo)移動(dòng)到行首再用右箭頭鍵或CTRL-F組合鍵把光標(biāo)移動(dòng)到第二格后按下“s”然后打回車(chē)運(yùn)行。盡管會(huì)產(chǎn)生更復(fù)雜的終端控制序列,但最后由終端模擬程序得到的顯示內(nèi)容都是一樣的,命令行仍然可以不被正確的識(shí)別。
方法二參照?qǐng)D9,缺省的狀態(tài)為程序輸出狀態(tài);當(dāng)收到輸入數(shù)據(jù)802時(shí),狀態(tài)轉(zhuǎn)為命令輸入狀態(tài),直至該輸入數(shù)據(jù)或之后的輸入數(shù)據(jù)為命令確認(rèn)字符、命令執(zhí)行字符或命令取消字符203時(shí),狀態(tài)轉(zhuǎn)為程序輸出狀態(tài);當(dāng)輸入數(shù)據(jù)為幫助字符204時(shí),狀態(tài)轉(zhuǎn)為命令提示狀態(tài),直至當(dāng)輸入數(shù)據(jù)為非幫助字符902時(shí),狀態(tài)轉(zhuǎn)為命令輸入狀態(tài)。
為了便于理解本實(shí)施例中的方法二,以下面的操作為例用戶在輸入完“1s-1R”后按下Tab鍵,此時(shí)Tab鍵被操作系統(tǒng)定義為幫助鍵,操作系統(tǒng)會(huì)自動(dòng)補(bǔ)全后面的“EADME”五個(gè)字符,然后用戶直接按回車(chē)執(zhí)行該命令。
具體的識(shí)別過(guò)程是,命令識(shí)別的狀態(tài)在用戶開(kāi)始輸入時(shí)進(jìn)入命令輸入狀態(tài),當(dāng)終端在用戶按下TAB后顯示的“EADME”自動(dòng)進(jìn)入終端模擬程序的緩沖區(qū),此時(shí)顯示內(nèi)容為正確的命令“1s-1 README”。
在上例中,如果當(dāng)前目錄下以R開(kāi)頭的文件有“README”和“RELEASES”兩個(gè),用戶在輸入完“1s-1R”后按TAB鍵,操作系統(tǒng)首先自動(dòng)補(bǔ)充E字符,然后換行顯示“README”和“RELEASES”兩個(gè)文件名,之后重新?lián)Q行顯示命令提示符和已經(jīng)完成的部分命令“1s-1RE”,用戶看到提示后輸入A字符并按下TAB鍵,操作系統(tǒng)自動(dòng)補(bǔ)全“DME”字符形成完整命令“1s-1 README”。
具體的識(shí)別過(guò)程是,系統(tǒng)在接收到用戶輸入TAB字符時(shí),命令識(shí)別的狀態(tài)進(jìn)入命令提示狀態(tài),之后操作系統(tǒng)顯示換行符、可選文件名提示并重新?lián)Q行顯示未完成命令行,此時(shí)的終端輸出會(huì)被記錄到輸出過(guò)程文件但不會(huì)被認(rèn)為是命令進(jìn)行記錄。直到用戶按下A鍵和最后的回車(chē)鍵,命令識(shí)別的狀態(tài)再重新進(jìn)入命令輸入狀態(tài),因此完整命令“1s-1 README”能夠被記錄下。
方法三參照?qǐng)D10,缺省的狀態(tài)為程序輸出狀態(tài);當(dāng)輸出數(shù)據(jù)為進(jìn)入交互狀態(tài)的特征序列206時(shí),狀態(tài)轉(zhuǎn)為交互式應(yīng)用狀態(tài),直至當(dāng)輸出數(shù)據(jù)為退出交互狀態(tài)的特征序列207時(shí),狀態(tài)轉(zhuǎn)為程序輸出狀態(tài);當(dāng)收到輸入數(shù)據(jù)802時(shí),狀態(tài)轉(zhuǎn)為命令輸入狀態(tài),直至該數(shù)據(jù)數(shù)據(jù)或之后的輸入數(shù)據(jù)為命令確認(rèn)字符、命令執(zhí)行字符或命令取消字符203時(shí),狀態(tài)轉(zhuǎn)為程序輸出狀態(tài);當(dāng)輸入數(shù)據(jù)為幫助字符204時(shí),狀態(tài)轉(zhuǎn)為命令提示狀態(tài),直至當(dāng)輸入數(shù)據(jù)為非幫助字符902時(shí),狀態(tài)轉(zhuǎn)為命令輸入狀態(tài)。
為了便于理解本實(shí)施例中的方法三,以下面的操作為例用戶使用命令“viREADME”運(yùn)行vi程序來(lái)編輯一個(gè)名為README的文件。他需要在文件末尾加上內(nèi)容為“[user@host dir]$hello”的一行,因此他先按G鍵把光標(biāo)移到文件尾部,再按o鍵建立一個(gè)新行,逐字打入該行內(nèi)容后按回車(chē),然后按ESC鍵,ZZ保存文件并退出。
具體的識(shí)別過(guò)程是,在VT102終端下,vi在進(jìn)入交互編輯模式時(shí)會(huì)通過(guò)顯示狀態(tài)的序列“ESC[?1049h”切換到備用屏幕(alternative screen),在檢測(cè)到該序列后,命令識(shí)別的狀態(tài)切換到交互式應(yīng)用狀態(tài),接下來(lái)的操作都不會(huì)被記錄,直到用戶退出vi,終端輸出顯示狀態(tài)的序列“ESC[?10491”切換回原始屏幕,檢測(cè)到該序列后,命令識(shí)別的狀態(tài)變?yōu)槌绦蜉敵鰻顟B(tài)。等待終端用戶的下一步操作。
上述幫助字符204為T(mén)ab鍵或“?”鍵。上述普通字符為除了幫助字符或命令確認(rèn)字符或命令執(zhí)行字符之外的輸入字符。上述進(jìn)入交互狀態(tài)的特征序列206為VT102及兼容終端的設(shè)置模式47號(hào),和/或VT102及兼容終端的設(shè)置模式1047號(hào),和/或VT102及兼容終端的設(shè)置模式1049號(hào),和/或VT100及兼容終端的設(shè)置模式1號(hào)。上述退出交互狀態(tài)的特征序列207為VT102及兼容終端的清除模式47號(hào),和/或VT102及兼容終端的清除模式1047號(hào),和/或VT102及兼容終端的清除模式1049號(hào),和/或VT100及兼容終端的清除模式1號(hào)。
當(dāng)前命令識(shí)別狀態(tài)為命令輸入狀態(tài)時(shí),則認(rèn)為模擬終端的顯示內(nèi)容為命令行,記錄輸出內(nèi)容;當(dāng)輸入數(shù)據(jù)出現(xiàn)命令確認(rèn)鍵、命令執(zhí)行鍵或命令取消鍵時(shí),則認(rèn)為一個(gè)命令行結(jié)束。通過(guò)上述步驟,可以方便、準(zhǔn)確地識(shí)別得到終端命令行。
實(shí)施例6參照?qǐng)D7、8、9、10,這是一種基于實(shí)施例5方案的識(shí)別終端命令行的裝置。該裝置包括終端數(shù)據(jù)捕獲裝置71、終端模擬裝置72和命令識(shí)別裝置73,其中命令識(shí)別裝置73包括獲取命令行子裝置74、輸入判別子裝置75和命令識(shí)別狀態(tài)確定子裝置76。
終端數(shù)據(jù)捕獲裝置71負(fù)責(zé)獲取終端與主機(jī)之間的輸入和輸出數(shù)據(jù)101,將獲取的輸入和輸出數(shù)據(jù)101分為輸出數(shù)據(jù)102和輸入數(shù)據(jù)103。終端模擬裝置72對(duì)輸出數(shù)據(jù)102模擬,獲取終端的輸出內(nèi)容104,所述輸出內(nèi)容包括顯示內(nèi)容和終端狀態(tài)。命令識(shí)別裝置73結(jié)合輸出內(nèi)容104和輸入數(shù)據(jù)103進(jìn)行識(shí)別,具體過(guò)程如下輸入判別子裝置75查看終端是否有輸入,當(dāng)有輸入時(shí),輸入判別子裝置75提示命令識(shí)別狀態(tài)確定子裝置76;命令識(shí)別狀態(tài)確定子裝置76根據(jù)輸入數(shù)據(jù)103和輸出數(shù)據(jù)102來(lái)判定當(dāng)前命令識(shí)別的狀態(tài),關(guān)于判定當(dāng)前命令識(shí)別的狀態(tài)的過(guò)程是基于實(shí)施例5中的三種判定當(dāng)前命令識(shí)別的狀態(tài)方法進(jìn)行的,當(dāng)前命令識(shí)別狀態(tài)為命令輸入狀態(tài)時(shí),則認(rèn)為模擬終端的顯示內(nèi)容為命令行,命令識(shí)別狀態(tài)確定子裝置76提示獲取命令行子裝置74;獲取命令行子裝置74記錄輸出內(nèi)容104;當(dāng)輸入數(shù)據(jù)出現(xiàn)命令確認(rèn)鍵、命令執(zhí)行鍵或命令取消鍵時(shí),輸入判別子裝置75提示獲取命令行子裝置74,獲取命令行子裝置74即認(rèn)為一個(gè)命令行結(jié)束。通過(guò)上述步驟,識(shí)別得到終端命令行105。
以上對(duì)本發(fā)明所提供的一種識(shí)別終端命令行方法、裝置,進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
權(quán)利要求
1.一種識(shí)別終端命令行的方法,其特征在于,包括獲取終端與主機(jī)之間的輸入數(shù)據(jù)和輸出數(shù)據(jù);將輸出數(shù)據(jù)通過(guò)模擬終端進(jìn)行模擬,獲取輸出內(nèi)容,所述輸出內(nèi)容包括顯示內(nèi)容和終端狀態(tài);結(jié)合輸入數(shù)據(jù)對(duì)輸出內(nèi)容進(jìn)行識(shí)別,得到終端命令行。
2.根據(jù)權(quán)利要求1所述的識(shí)別終端命令行的方法,其特征在于,通過(guò)網(wǎng)絡(luò)偵聽(tīng)或通訊線路偵聽(tīng)的方法或軟件轉(zhuǎn)發(fā)的方法獲取終端與主機(jī)之間的輸入數(shù)據(jù)和輸出數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的識(shí)別終端命令行的方法,其特征在于,按照下述步驟結(jié)合輸入數(shù)據(jù)對(duì)輸出內(nèi)容進(jìn)行識(shí)別查看輸出內(nèi)容;當(dāng)輸出內(nèi)容出現(xiàn)命令提示符時(shí),查看是否有輸入數(shù)據(jù);若有輸入數(shù)據(jù),則認(rèn)為輸出內(nèi)容中命令提示符后的顯示內(nèi)容為命令行;當(dāng)輸入數(shù)據(jù)出現(xiàn)命令確認(rèn)鍵、命令執(zhí)行鍵或命令取消鍵時(shí),則認(rèn)為一個(gè)命令行結(jié)束。
4.根據(jù)權(quán)利要求1所述的識(shí)別終端命令行的方法,其特征在于,按照下述步驟結(jié)合輸入數(shù)據(jù)對(duì)輸出內(nèi)容進(jìn)行識(shí)別建立一個(gè)命令庫(kù),命令庫(kù)中包含操作系統(tǒng)所有的命令;查看輸出內(nèi)容;當(dāng)輸出內(nèi)容出現(xiàn)命令提示符時(shí),查看是否有輸入數(shù)據(jù);若有輸入數(shù)據(jù),則將命令提示符后顯示內(nèi)容的第一個(gè)字段與命令庫(kù)中的命令進(jìn)行匹配;若有可以匹配的命令,則認(rèn)為命令提示符后的顯示內(nèi)容為命令行;當(dāng)輸入數(shù)據(jù)出現(xiàn)命令確認(rèn)鍵、命令執(zhí)行鍵或命令取消鍵時(shí),則認(rèn)為一個(gè)命令行結(jié)束。
5.根據(jù)權(quán)利要求1所述的識(shí)別終端命令行的方法,其特征在于,按照下述步驟結(jié)合輸入數(shù)據(jù)對(duì)輸出內(nèi)容進(jìn)行識(shí)別等待輸入數(shù)據(jù)或輸出內(nèi)容;獲得當(dāng)前命令識(shí)別狀態(tài);當(dāng)命令識(shí)別狀態(tài)為命令輸入狀態(tài)時(shí),則認(rèn)為輸出內(nèi)容的顯示內(nèi)容為命令行;當(dāng)輸入數(shù)據(jù)出現(xiàn)命令確認(rèn)鍵、命令執(zhí)行鍵或命令取消鍵時(shí),則認(rèn)為一個(gè)命令行結(jié)束。
6.根據(jù)權(quán)利要求5所述的識(shí)別終端命令行的方法,其特征在于,按照下述狀態(tài)轉(zhuǎn)換步驟獲得當(dāng)前命令識(shí)別狀態(tài)使缺省的狀態(tài)為程序輸出狀態(tài);當(dāng)接收到輸入字符時(shí),狀態(tài)轉(zhuǎn)為命令輸入狀態(tài);在命令輸入狀態(tài)下進(jìn)一步檢查輸入數(shù)據(jù),若輸入數(shù)據(jù)為命令確認(rèn)字符、命令執(zhí)行字符或命令取消字符時(shí),狀態(tài)轉(zhuǎn)為程序輸出狀態(tài)。
7.根據(jù)權(quán)利要求5所述的識(shí)別終端命令行的方法,其特征在于,按照下述狀態(tài)轉(zhuǎn)換步驟獲得當(dāng)前命令識(shí)別狀態(tài)使缺省的狀態(tài)為程序輸出狀態(tài);當(dāng)接收到輸入字符時(shí),狀態(tài)轉(zhuǎn)為命令輸入狀態(tài);在命令輸入狀態(tài)下進(jìn)一步檢查輸入數(shù)據(jù),若輸入數(shù)據(jù)為幫助字符,狀態(tài)轉(zhuǎn)為命令提示狀態(tài);在命令輸入狀態(tài)下進(jìn)一步檢查輸入數(shù)據(jù),若輸入數(shù)據(jù)為命令確認(rèn)字符、命令執(zhí)行字符或命令取消字符時(shí),狀態(tài)轉(zhuǎn)為程序輸出狀態(tài);在命令提示狀態(tài)下,當(dāng)輸入數(shù)據(jù)為非幫助字符時(shí),狀態(tài)轉(zhuǎn)為命令輸入狀態(tài)。
8.根據(jù)權(quán)利要求5所述的識(shí)別終端命令行的方法,其特征在于,按照下述狀態(tài)轉(zhuǎn)換步驟獲得當(dāng)前命令識(shí)別狀態(tài)使缺省的狀態(tài)為程序輸出狀態(tài);當(dāng)輸出數(shù)據(jù)為進(jìn)入交互狀態(tài)的特征序列時(shí),狀態(tài)轉(zhuǎn)為交互式應(yīng)用狀態(tài);當(dāng)接收到輸入字符時(shí),狀態(tài)轉(zhuǎn)為命令輸入狀態(tài);在命令輸入狀態(tài)下進(jìn)一步檢查輸入數(shù)據(jù),若輸入數(shù)據(jù)為幫助字符,狀態(tài)轉(zhuǎn)為命令提示狀態(tài);在命令輸入狀態(tài)下進(jìn)一步檢查輸入數(shù)據(jù),若輸入數(shù)據(jù)為命令確認(rèn)字符、命令執(zhí)行字符或命令取消字符時(shí),狀態(tài)轉(zhuǎn)為程序輸出狀態(tài);在命令提示狀態(tài)下,當(dāng)輸入數(shù)據(jù)為非幫助字符時(shí),狀態(tài)轉(zhuǎn)為命令輸入狀態(tài);在交互式應(yīng)用狀態(tài)下,當(dāng)輸出數(shù)據(jù)為退出交互狀態(tài)的特征序列時(shí),狀態(tài)轉(zhuǎn)為程序輸出狀態(tài)。
9.根據(jù)權(quán)利要求7或8所述的識(shí)別終端命令行的方法,其特征在于,所述幫助字符為T(mén)AB鍵或“?”鍵。
10.根據(jù)權(quán)利要求8所述的識(shí)別終端命令行的方法,其特征在于,所述進(jìn)入交互狀態(tài)的特征序列為VT102及兼容終端的設(shè)置模式47號(hào),和/或VT102及兼容終端的設(shè)置模式1047號(hào),和/或VT102及兼容終端的設(shè)置模式1049號(hào),和/或VT100及兼容終端的設(shè)置模式1號(hào)。
11.根據(jù)權(quán)利要求8所述的識(shí)別終端命令行的方法,其特征在于,所述退出交互狀態(tài)的特征序列為VT102及兼容終端的清除模式47號(hào),和/或VT102及兼容終端的清除模式1047號(hào),和/或VT102及兼容終端的清除模式1049號(hào),和/或VT100及兼容終端的清除模式1號(hào)。
12.一種基于權(quán)利要求1的識(shí)別終端命令行的裝置,其特征在于,包括終端數(shù)據(jù)捕獲裝置,負(fù)責(zé)獲取終端與主機(jī)之間的輸入數(shù)據(jù)和輸出數(shù)據(jù);終端模擬裝置,輸出數(shù)據(jù)通過(guò)模擬終端的模擬,獲取輸出內(nèi)容;命令識(shí)別裝置,結(jié)合輸入數(shù)據(jù)對(duì)輸出內(nèi)容進(jìn)行識(shí)別,得到終端命令行。
13.根據(jù)權(quán)利要求12所述的識(shí)別終端命令行的裝置,其特征在于,所述命令識(shí)別裝置包括輸出內(nèi)容判別子裝置,查看輸出內(nèi)容,模擬終端的輸出內(nèi)容出現(xiàn)命令提示符時(shí),提示輸入判別子裝置;輸入判別子裝置,根據(jù)輸出內(nèi)容判別子裝置的提示,獲取命令行,即提示出現(xiàn)命令提示符且終端有輸入時(shí),則認(rèn)為提示符后的模擬終端的輸出內(nèi)容的顯示內(nèi)容為命令行;當(dāng)輸入數(shù)據(jù)出現(xiàn)命令確認(rèn)鍵、命令執(zhí)行鍵或命令取消鍵時(shí),則認(rèn)為一個(gè)命令行結(jié)束。
14.根據(jù)權(quán)利要求12所述的識(shí)別終端命令行的裝置,其特征在于,所述命令識(shí)別裝置包括命令庫(kù),命令庫(kù)中包含系統(tǒng)所有的命令;輸出內(nèi)容判別子裝置,查看輸出內(nèi)容,模擬終端的輸出內(nèi)容出現(xiàn)命令提示符時(shí),提示輸入判別子裝置;輸入判別子裝置,根據(jù)輸出內(nèi)容判別子裝置的提示,獲取命令行,即提示出現(xiàn)命令提示符時(shí),則將命令提示符后模擬終端顯示的第一個(gè)字段與命令庫(kù)中的命令進(jìn)行匹配,若匹配則認(rèn)為提示符后的模擬終端的輸出內(nèi)容的顯示內(nèi)容為命令行,當(dāng)輸入數(shù)據(jù)出現(xiàn)命令確認(rèn)鍵、命令執(zhí)行鍵或命令取消鍵時(shí),則認(rèn)為一個(gè)命令行結(jié)束。
15.根據(jù)權(quán)利要求12所述的識(shí)別終端命令行的裝置,其特征在于,所述命令識(shí)別裝置包括輸入判別子裝置,查看終端是否有輸入;命令識(shí)別狀態(tài)確定子裝置,根據(jù)輸入數(shù)據(jù)和輸出數(shù)據(jù)來(lái)判定當(dāng)前命令識(shí)別狀態(tài);獲取命令行子裝置,當(dāng)前命令識(shí)別狀態(tài)為命令輸入狀態(tài)時(shí),則認(rèn)為模擬終端的輸出內(nèi)容的顯示內(nèi)容為命令行,輸入數(shù)據(jù)出現(xiàn)命令確認(rèn)鍵或命令執(zhí)行鍵時(shí),則認(rèn)為一個(gè)命令行結(jié)束,獲取上述命令行并保存;輸入數(shù)據(jù)出現(xiàn)命令取消鍵時(shí),認(rèn)為一個(gè)命令行結(jié)束,但不保存上述命令行。
16.根據(jù)權(quán)利要求15所述的識(shí)別終端命令行的裝置,其特征在于,所述命令識(shí)別狀態(tài)包括程序輸出狀態(tài),表示這時(shí)終端正在產(chǎn)生程序的結(jié)果輸出;命令輸入狀態(tài),表示用戶正在輸入命令,從用戶在程序輸出狀態(tài)下按鍵輸入開(kāi)始,直到用戶確認(rèn)或取消輸入。
17.根據(jù)權(quán)利要求15所述的識(shí)別終端命令行的裝置,其特征在于,所述命令識(shí)別狀態(tài)包括程序輸出狀態(tài),表示這時(shí)終端正在產(chǎn)生程序的結(jié)果輸出;命令輸入狀態(tài),表示用戶正在輸入命令,從用戶在程序輸出狀態(tài)下按鍵輸入開(kāi)始,直到用戶確認(rèn)或取消輸入;命令提示狀態(tài),表示目前處于命令補(bǔ)全的輔助命令輸入狀態(tài)。
18.根據(jù)權(quán)利要求15所述的識(shí)別終端命令行的裝置,其特征在于,所述命令識(shí)別狀態(tài)包括程序輸出狀態(tài),表示這時(shí)終端正在產(chǎn)生程序的結(jié)果輸出;命令輸入狀態(tài),表示用戶正在輸入命令,從用戶在程序輸出狀態(tài)下按鍵輸入開(kāi)始,直到用戶確認(rèn)或取消輸入;交互式應(yīng)用狀態(tài),表示這時(shí)計(jì)算機(jī)處于運(yùn)行一些全屏交互程序的交互應(yīng)用狀態(tài);命令提示狀態(tài),表示目前處于命令補(bǔ)全的輔助命令輸入狀態(tài)。
全文摘要
本發(fā)明涉及一種識(shí)別命令行的方法和裝置,特別是涉及一種識(shí)別終端命令行的方法和裝置。本發(fā)明解決的問(wèn)題是現(xiàn)有技術(shù)中存在的識(shí)別的可靠性較差,或?qū)崿F(xiàn)復(fù)雜、成本高、通用性差的缺點(diǎn)。本發(fā)明公開(kāi)了一種識(shí)別終端命令行的方法,包括下列步驟獲取終端與主機(jī)之間的輸入數(shù)據(jù)和輸出數(shù)據(jù);將輸出數(shù)據(jù)通過(guò)模擬終端進(jìn)行模擬,獲取輸出內(nèi)容,所述輸出內(nèi)容包括顯示內(nèi)容和終端狀態(tài);結(jié)合輸入數(shù)據(jù)對(duì)輸出內(nèi)容進(jìn)行識(shí)別,得到終端命令行?;谏鲜龇椒?,本發(fā)明還公開(kāi)了一種基于上述方法的識(shí)別終端命令行的裝置。本發(fā)明實(shí)現(xiàn)了低成本、高通用性地識(shí)別終端命令行,同時(shí)確保識(shí)別的可靠性。
文檔編號(hào)G06F3/00GK1889442SQ20061008724
公開(kāi)日2007年1月3日 申請(qǐng)日期2006年6月14日 優(yōu)先權(quán)日2006年6月14日
發(fā)明者施桂琳 申請(qǐng)人:杭州奇智信息科技有限公司