本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別是涉及一種機群命令運行方法及系統(tǒng)。
背景技術(shù):
通常在對大規(guī)模的Linux/Unix機群的命令運行中,要對多臺機器實現(xiàn)相同的操作,如安裝軟件、拷貝文件、刪除文件等,需要依次登錄每臺機器,然后執(zhí)行相同的命令來完成這些操作。
傳統(tǒng)的技術(shù)方案可參閱圖4,其中Server 1、Server 2......Server n表示不同的Linux/Unix服務(wù)器,當(dāng)需要對所有的服務(wù)器做相同的操作的時候,操作者需要依次登錄Server 1、Server 2......Server n,然后執(zhí)行相同的命令,以此來完成在所有服務(wù)器上完成相同的操作。而依次登錄所有服務(wù)器完成相同的事情,需要耗費巨大的時間和精力,效率低下,尤其是在服務(wù)器數(shù)量較多的時候,難度更加大。
技術(shù)實現(xiàn)要素:
本發(fā)明旨在至少解決現(xiàn)有技術(shù)中存在的技術(shù)問題之一。為此,本發(fā)明的一個目的在于提出一種效率更高的機群命令運行方法。
根據(jù)本發(fā)明實施例的機群命令運行方法,應(yīng)用于Linux/Unix系統(tǒng)中,所述方法包括:
獲取機群中多臺機器的IP及登錄信息,并根據(jù)每臺所述機器的IP及登錄信息創(chuàng)建機器列表文件;
根據(jù)命令列表文件生成執(zhí)行腳本,所述命令列表文件包括需要執(zhí)行的命令;
將所述機器列表文件中的每臺所述機器的IP及登錄信息依次傳遞給所述執(zhí)行腳本,并調(diào)用所述執(zhí)行腳本對所述機器列表文件中的每臺所述機器執(zhí)行所述需要執(zhí)行的命令。
根據(jù)本發(fā)明實施例的機群命令運行方法,首先獲取機群中多臺機器的IP及登錄信息,然后根據(jù)命令列表文件生成執(zhí)行腳本,在命令運行操作時,只需將每臺機器的IP及登錄信息依次傳遞給執(zhí)行腳本,再調(diào)用執(zhí)行腳本執(zhí)行需要執(zhí)行的命令即可,無需過多的人為操作,自動化程度高,可以同時對多臺機器進行相同的命令運行,大大節(jié)省了維護多臺服務(wù)器時的時間成本,提升了效率。
另外,根據(jù)本發(fā)明上述實施例的機群命令運行方法,還可以具有如下附加的技術(shù)特征:
進一步地,在本發(fā)明的一個實施例中,所述命令列表文件包括至少一個依序排列的命令行,且任一所述命令行均包括正則表達式和與所述正則表達式對應(yīng)的需要執(zhí)行的命令,所述調(diào)用所述執(zhí)行腳本對所述機器列表文件中的每臺所述機器執(zhí)行所述需要執(zhí)行的命令的步驟包括:
在所述機器列表文件中的每臺所述機器中均調(diào)用所述執(zhí)行腳本以獲取上一個命令行中的需要執(zhí)行的命令被執(zhí)行后的輸出信息;
在所述命令列表文件中的當(dāng)前命令行中查找是否存在與所述輸出信息對應(yīng)的正則表達式;
若是,則執(zhí)行與所述輸出信息對應(yīng)的正則表達式對應(yīng)的需要執(zhí)行的命令。
進一步地,在本發(fā)明的一個實施例中,所述根據(jù)命令列表文件生成執(zhí)行腳本的步驟包括:
創(chuàng)建文件頭代碼塊;
依次讀取所述命令列表文件中的每個命令行,且每讀取一個所述命令行,創(chuàng)建一個對應(yīng)的代碼塊,直至所述命令列表文件中的所有命令行均被讀??;
創(chuàng)建文件尾代碼塊。
進一步地,在本發(fā)明的一個實施例中,所述將所述機器列表文件中的每臺所述機器的IP及登錄信息依次傳遞給所述執(zhí)行腳本,并調(diào)用所述執(zhí)行腳本對所述機器列表文件中的每臺所述機器執(zhí)行所述需要執(zhí)行的命令的步驟包括:
從所述機器列表文件中依次讀取每臺所述機器的IP及登錄信息,且每讀取一臺所述機器的IP及登錄信息,就將讀取到的當(dāng)前機器的IP及登錄信息傳遞給所述執(zhí)行腳本,并調(diào)用所述執(zhí)行腳本對所述當(dāng)前機器執(zhí)行所述需要執(zhí)行的命令。
進一步地,在本發(fā)明的一個實施例中,所述調(diào)用所述執(zhí)行腳本對所述當(dāng)前機器執(zhí)行所述需要執(zhí)行的命令的步驟之后,所述方法還包括:
當(dāng)判斷到所述執(zhí)行腳本對所述當(dāng)前機器執(zhí)行所述需要執(zhí)行的命令的執(zhí)行結(jié)果錯誤時,終止所述當(dāng)前機器的命令運行,并輸出失敗日志。
本發(fā)明的另一個目的在于提出一種效率更高的機群命令運行系統(tǒng)。
根據(jù)本發(fā)明實施例的機群命令運行系統(tǒng),應(yīng)用于Linux/Unix系統(tǒng)中,所述系統(tǒng)包括:
獲取模塊,用于獲取機群中多臺機器的IP及登錄信息,并根據(jù)每臺所述機器的IP及登錄信息創(chuàng)建機器列表文件;
生成模塊,用于根據(jù)命令列表文件生成執(zhí)行腳本,所述命令列表文件包括需要執(zhí)行的命令;
傳遞調(diào)用模塊,用于將所述機器列表文件中的每臺所述機器的IP及登錄信息依次傳遞給所述執(zhí)行腳本,并調(diào)用所述執(zhí)行腳本對所述機器列表文件中的每臺所述機器執(zhí)行所述需要執(zhí)行的命令。
另外,根據(jù)本發(fā)明上述實施例的機群命令運行系統(tǒng),還可以具有如下附加的技術(shù)特征:
進一步地,在本發(fā)明的一個實施例中,所述命令列表文件包括至少一個依序排列的命令行,且任一所述命令行均包括正則表達式和與所述正則表達式對應(yīng)的需要執(zhí)行的命令,所述傳遞調(diào)用模塊還用于:
在所述機器列表文件中的每臺所述機器中均調(diào)用所述執(zhí)行腳本以獲取上一個命令行中的需要執(zhí)行的命令被執(zhí)行后的輸出信息;
在所述命令列表文件中的當(dāng)前命令行中查找是否存在與所述輸出信息對應(yīng)的正則表達式;
若是,則執(zhí)行與所述輸出信息對應(yīng)的正則表達式對應(yīng)的需要執(zhí)行的命令。
進一步地,在本發(fā)明的一個實施例中,所述生成模塊具體用于:
創(chuàng)建文件頭代碼塊;
依次讀取所述命令列表文件中的每個命令行,且每讀取一個所述命令行,創(chuàng)建一個對應(yīng)的代碼塊,直至所述命令列表文件中的所有命令行均被讀??;
創(chuàng)建文件尾代碼塊。
進一步地,在本發(fā)明的一個實施例中,所述傳遞調(diào)用模塊還用于:
從所述機器列表文件中依次讀取每臺所述機器的IP及登錄信息,且每讀取一臺所述機器的IP及登錄信息,就將讀取到的當(dāng)前機器的IP及登錄信息傳遞給所述執(zhí)行腳本,并調(diào)用所述執(zhí)行腳本對所述當(dāng)前機器執(zhí)行所述需要執(zhí)行的命令。
進一步地,在本發(fā)明的一個實施例中,所述系統(tǒng)還包括:
終止模塊,用于在判斷到所述執(zhí)行腳本對所述當(dāng)前機器執(zhí)行所述需要執(zhí)行的命令的執(zhí)行結(jié)果錯誤時,終止所述當(dāng)前機器的命令運行,并輸出失敗日志。
本發(fā)明的附加方面和優(yōu)點將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實踐了解到。
附圖說明
本發(fā)明的上述和/或附加的方面和優(yōu)點從結(jié)合下面附圖對實施例的描述中將變得明顯和容易理解,其中:
圖1是根據(jù)本發(fā)明一實施例的機群命令運行方法的流程圖;
圖2是圖1中調(diào)用所述執(zhí)行腳本對所述當(dāng)前機器執(zhí)行所述需要執(zhí)行的命令的步驟詳細的流程圖;
圖3是根據(jù)本發(fā)明另一實施例的機群命令運行系統(tǒng)的結(jié)構(gòu)示意圖;
圖4是現(xiàn)有技術(shù)中機群命令運行的原理示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
請參閱圖1,本發(fā)明一實施例提出的機群命令運行方法,應(yīng)用于Linux/Unix系統(tǒng)中,所述方法至少包括以下步驟:
S101,獲取機群中多臺機器的IP及登錄信息,并根據(jù)每臺所述機器的IP及登錄信息創(chuàng)建機器列表文件;
其中,具體實施時,主要是對機器的服務(wù)器進行操作,獲取需要命令運行的機器中每臺服務(wù)器的IP地址和登錄信息,登錄信息具體包括用戶名和密碼,然后根據(jù)每臺服務(wù)器的IP及登錄信息創(chuàng)建機器列表文件host.list,機器列表文件host.list可以以“IP:通信協(xié)議:用戶名:密碼”的格式配置文件的一行內(nèi)容,用于指明操作哪些機器,這些機器使用ssh/telnetz作為通信協(xié)議訪問,訪問的用戶和密碼等實現(xiàn)登錄操作的內(nèi)容。此外,機群中的所有服務(wù)器可以通過組件局域網(wǎng)的方式建立連接,以實現(xiàn)通過一臺服務(wù)器同時對其它服務(wù)器進行命令運行。
S102,根據(jù)命令列表文件生成執(zhí)行腳本,所述命令列表文件包括需要執(zhí)行的命令;
其中,命令列表文件至少包括需要執(zhí)行的命令,即命令運行的具體操作,如安裝軟件、拷貝文件、刪除文件等,命令列表文件的格式例如是cmd.list。根據(jù)命令列表文件cmd.list生成執(zhí)行腳本的方式可以有多種,例如采用expect這個可以支持tcl交互式語言的shell工具,首先編寫一個可以自動生成expect腳本的工具expectcreator,然后expectcreator能夠自動根據(jù)命令列表文件cmd.list生成一個能夠?qū)崿F(xiàn)命令的expect執(zhí)行腳本expect_cmd_run.sh,具體的編程數(shù)據(jù)在此不作限定。
S103,將所述機器列表文件中的每臺所述機器的IP及登錄信息依次傳遞給所述執(zhí)行腳本,并調(diào)用所述執(zhí)行腳本對所述機器列表文件中的每臺所述機器執(zhí)行所述需要執(zhí)行的命令。
其中,將所述機器列表文件中的每臺機器的IP及登錄信息依次傳遞給所述執(zhí)行腳本也可以通過expectcreator實現(xiàn),即expectcreator能夠自動將機器列表文件host.list中的每臺機器的IP及登錄信息依次傳遞給執(zhí)行腳本expect_cmd_run.sh,然后通過調(diào)用執(zhí)行腳本expect_cmd_run.sh對機器列表文件host.list中的每臺機器執(zhí)行cmd.list中的需要執(zhí)行的命令??梢岳斫獾?,具體實施時,只要在其中一臺機器上進行操作,就可實現(xiàn)對機群中所有機器進行命令運行。
根據(jù)本發(fā)明實施例的機群命令運行方法,首先獲取機群中多臺機器的IP及登錄信息,然后根據(jù)命令列表文件生成執(zhí)行腳本,在命令運行操作時,只需將每臺機器的IP及登錄信息依次傳遞給執(zhí)行腳本,再調(diào)用執(zhí)行腳本執(zhí)行需要執(zhí)行的命令即可,無需過多的人為操作,自動化程度高,可以同時對多臺機器進行相同的命令運行,大大節(jié)省了維護多臺服務(wù)器時的時間成本,提升了效率。
其中,根據(jù)本發(fā)明的一個示例,所述命令列表文件cmd.list包括若干個命令行,且任一所述命令行均包括正則表達式和與所述正則表達式對應(yīng)的需要執(zhí)行的命令,例如,命令運行的過程包括安裝軟件、拷貝文件、刪除文件這三個操作,則每個操作都可以對應(yīng)一個命令行,執(zhí)行了其中一個命令行中的需要執(zhí)行的命令后,才會執(zhí)行下一行命令行中的需要執(zhí)行的命令。任意一行命令行可以采用以下表達方式“正則表達式1::需要執(zhí)行的命令1,正則表達式2::需要執(zhí)行的命令2…….正則表達式n::需要執(zhí)行的命令n”,即每一個命令行中正則表達式和與需要執(zhí)行的命令相對應(yīng),正則表達式和與所述正則表達式對應(yīng)的需要執(zhí)行的命令可以為多個,這是由于機群中每臺機群因為自身的差異,執(zhí)行命令后輸出結(jié)果可能不同。
具體地,請參閱圖2,S103中,所述調(diào)用所述執(zhí)行腳本對所述當(dāng)前機器執(zhí)行所述需要執(zhí)行的命令的步驟包括:
S1031,在所述機器列表文件中的每臺所述機器中均調(diào)用所述執(zhí)行腳本以獲取上一個命令行中的需要執(zhí)行的命令被執(zhí)行后的輸出信息;
其中,對每臺機器的處理過程相同,均調(diào)用所述執(zhí)行腳本以獲取上一個命令行中的需要執(zhí)行的命令被執(zhí)行后的輸出信息,對于命令列表文件cmd.list中第一個命令行,默認只有一個正則表達式和與之對應(yīng)的一個需要執(zhí)行的命令,且該正則表達式為登錄服務(wù)器成功,即若登錄服務(wù)器成功,則執(zhí)行與登錄服務(wù)器成功這條正則表達式對應(yīng)的需要執(zhí)行的命令,例如需要執(zhí)行的命令為安裝軟件;若登錄服務(wù)器不成功,則不再進行后續(xù)操作。從第二個命令行開始,會獲取上一個命令行中的需要執(zhí)行的命令被執(zhí)行后的輸出信息,例如第一個命令行中安裝軟件這個命令被執(zhí)行后的結(jié)果為安裝軟件成功,則獲取安裝軟件成功的輸出結(jié)果。
S1032,在所述命令列表文件中的當(dāng)前命令行中查找是否存在與所述輸出信息對應(yīng)的正則表達式;
其中,會在第二個命令行查找是否存在與安裝軟件成功這個結(jié)果對應(yīng)的正則表達式。
S1033,若是,則執(zhí)行與所述輸出信息對應(yīng)的正則表達式對應(yīng)的需要執(zhí)行的命令。
其中,若第二個命令行中存在與安裝軟件成功這個結(jié)果對應(yīng)的正則表達式,例如第二命令行中有一個正則表達式為“軟件安裝成功”,與該正則表達式對應(yīng)的需要執(zhí)行的命令“文件重命名”,則會執(zhí)行“文件重命名”這個需要執(zhí)行的命令。
具體地,根據(jù)本發(fā)明的一個示例,S102中,根據(jù)命令列表文件生成執(zhí)行腳本的步驟包括:
創(chuàng)建文件頭代碼塊;
依次讀取所述命令列表文件中的每個命令行,且每讀取一個所述命令行,創(chuàng)建一個對應(yīng)的代碼塊,直至所述命令列表文件中的所有命令行均被讀取;
創(chuàng)建文件尾代碼塊。
本實施例以expect腳本為例進行說明,創(chuàng)建文件頭代碼塊是指創(chuàng)建expect shell文件頭代碼塊,具體包括腳本解析器聲明、參數(shù)獲取、變量聲明等;然后創(chuàng)建登錄expect shell代碼塊,開啟對終端輸出的“表達式獲取”,接著依次讀取所述命令列表文件中的每個命令行的內(nèi)容,并創(chuàng)建對應(yīng)的代碼塊,直至所述命令列表文件中的所有命令行均被讀取;最后創(chuàng)建文件尾代碼塊,完成執(zhí)行腳本的生成。
具體地,根據(jù)本發(fā)明的一個示例,S103中,所述將所述機器列表文件中的每臺所述機器的IP及登錄信息依次傳遞給所述執(zhí)行腳本,并調(diào)用所述執(zhí)行腳本對所述機器列表文件中的每臺所述機器執(zhí)行所述需要執(zhí)行的命令的步驟具體指:
從所述機器列表文件中依次讀取每臺所述機器的IP及登錄信息,且每讀取一臺所述機器的IP及登錄信息,就將讀取到的當(dāng)前機器的IP及登錄信息傳遞給所述執(zhí)行腳本,并調(diào)用所述執(zhí)行腳本對所述當(dāng)前機器執(zhí)行所述需要執(zhí)行的命令。
例如,從機器列表文件host.list中依次讀取機器1的IP及登錄信息,就會將機器1的IP及登錄信息傳遞給所述執(zhí)行腳本,并調(diào)用所述執(zhí)行腳本對所述當(dāng)前機器執(zhí)行所述需要執(zhí)行的命令,從而進一步命令運行的效率。
此外,在調(diào)用所述執(zhí)行腳本對所述當(dāng)前機器執(zhí)行所述需要執(zhí)行的命令的步驟之后,還包括:
當(dāng)判斷到所述執(zhí)行腳本對所述當(dāng)前機器執(zhí)行所述需要執(zhí)行的命令的執(zhí)行結(jié)果錯誤時,終止所述當(dāng)前機器的命令運行,并輸出失敗日志。
可以理解的,若所述執(zhí)行腳本對所述當(dāng)前機器執(zhí)行所述需要執(zhí)行的命令的執(zhí)行結(jié)果正確,則進一步判斷機器列表文件host.list中是否還有未讀取的機器,若有,則進行讀??;若沒有,則流程結(jié)束。
本實施例提出的機群命令運行方法還通過抓取命令執(zhí)行時的終端輸出內(nèi)容,自動判斷下一步該執(zhí)行何種操作,對于不懂expect和shell語言的人,也可以直接利用本實施例的方法通過腳本生成工具expectcreator和執(zhí)行腳本expect_cmd_run.sh輕松實現(xiàn)自動命令運行操作。
請參閱圖3,基于同一發(fā)明構(gòu)思,本發(fā)明另一實施例提出的機群命令運行系統(tǒng),應(yīng)用于Linux/Unix系統(tǒng)中,應(yīng)用于白板軟件中,所述系統(tǒng)包括:
獲取模塊,用于獲取機群中多臺機器的IP及登錄信息,并根據(jù)每臺所述機器的IP及登錄信息創(chuàng)建機器列表文件;
生成模塊,用于根據(jù)命令列表文件生成執(zhí)行腳本,所述命令列表文件包括需要執(zhí)行的命令;
傳遞調(diào)用模塊,用于將所述機器列表文件中的每臺所述機器的IP及登錄信息依次傳遞給所述執(zhí)行腳本,并調(diào)用所述執(zhí)行腳本對所述機器列表文件中的每臺所述機器執(zhí)行所述需要執(zhí)行的命令。
本實施例中,所述命令列表文件包括至少一個依序排列的命令行,且任一所述命令行均包括正則表達式和與所述正則表達式對應(yīng)的需要執(zhí)行的命令,所述傳遞調(diào)用模塊還用于:
在所述機器列表文件中的每臺所述機器中均調(diào)用所述執(zhí)行腳本以獲取上一個命令行中的需要執(zhí)行的命令被執(zhí)行后的輸出信息;
在所述命令列表文件中的當(dāng)前命令行中查找是否存在與所述輸出信息對應(yīng)的正則表達式;
若是,則執(zhí)行與所述輸出信息對應(yīng)的正則表達式對應(yīng)的需要執(zhí)行的命令。
本實施例中,所述生成模塊具體用于:
創(chuàng)建文件頭代碼塊;
依次讀取所述命令列表文件中的每個命令行,且每讀取一個所述命令行,創(chuàng)建一個對應(yīng)的代碼塊,直至所述命令列表文件中的所有命令行均被讀??;
創(chuàng)建文件尾代碼塊。
本實施例中,所述傳遞調(diào)用模塊還用于:
從所述機器列表文件中依次讀取每臺所述機器的IP及登錄信息,且每讀取一臺所述機器的IP及登錄信息,就將讀取到的當(dāng)前機器的IP及登錄信息傳遞給所述執(zhí)行腳本,并調(diào)用所述執(zhí)行腳本對所述當(dāng)前機器執(zhí)行所述需要執(zhí)行的命令。
本實施例中,所述系統(tǒng)還包括:
終止模塊,用于判斷到所述執(zhí)行腳本對所述當(dāng)前機器執(zhí)行所述需要執(zhí)行的命令的執(zhí)行結(jié)果錯誤時,終止所述當(dāng)前機器的命令運行,并輸出失敗日志。
本實施例提出的機群命令運行系統(tǒng)的實現(xiàn)原理和技術(shù)效果與本發(fā)明實施例中提出的機群命令運行方法相同,在此不予贅述。
在流程圖中表示或在此以其他方式描述的邏輯和/或步驟,例如,可以被認為是用于實現(xiàn)邏輯功能的可執(zhí)行指令的定序列表,可以具體實現(xiàn)在任何計算機可讀介質(zhì)中,以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備(如基于計算機的系統(tǒng)、包括處理器的系統(tǒng)或其他可以從指令執(zhí)行系統(tǒng)、裝置或設(shè)備取指令并執(zhí)行指令的系統(tǒng))使用,或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用。就本說明書而言,“計算機可讀介質(zhì)”可以是任何可以包含、存儲、通信、傳播或傳輸程序以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用的裝置。
計算機可讀介質(zhì)的更具體的示例(非窮盡性列表)包括以下:具有一個或多個布線的電連接部(電子裝置),便攜式計算機盤盒(磁裝置),隨機存取存儲器(RAM),只讀存儲器(ROM),可擦除可編輯只讀存儲器(EPROM或閃速存儲器),光纖裝置,以及便攜式光盤只讀存儲器(CDROM)。另外,計算機可讀介質(zhì)甚至可以是可在其上打印所述程序的紙或其他合適的介質(zhì),因為可以例如通過對紙或其他介質(zhì)進行光學(xué)掃描,接著進行編輯、解譯或必要時以其他合適方式進行處理來以電子方式獲得所述程序,然后將其存儲在計算機存儲器中。
應(yīng)當(dāng)理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來實現(xiàn)。在上述實施方式中,多個步驟或方法可以用存儲在存儲器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實現(xiàn)。例如,如果用硬件來實現(xiàn),和在另一實施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項或他們的組合來實現(xiàn):具有用于對數(shù)據(jù)信號實現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(PGA),現(xiàn)場可編程門陣列(FPGA)等。
在本說明書的描述中,參考術(shù)語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不一定指的是相同的實施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點可以在任何的一個或多個實施例或示例中以合適的方式結(jié)合。
盡管已經(jīng)示出和描述了本發(fā)明的實施例,本領(lǐng)域的普通技術(shù)人員可以理解:在不脫離本發(fā)明的原理和宗旨的情況下可以對這些實施例進行多種變化、修改、替換和變型,本發(fā)明的范圍由權(quán)利要求及其等同物限定。