命令行处理系统及方法

文档序号:6431418阅读:111来源:国知局
专利名称:命令行处理系统及方法
技术领域
本发明涉及数据通信技术,尤其涉及一种命令行处理系统及方法。
背景技术
在网络管理领域中,命令行配置是极为常用的一种设备管理方法。用户在设备的终端界面上通过命令行界面(command-line interface, CLI)输入一串字符串(即命令行),设置在设备中的命令行解析器对命令行进行解析,将其转换成可执行指令,并将可执行指令发送至命令行所指定的执行单元,以由执行单元执行指令。当采用上述方式进行命令行配置时,由于命令行解析器对命令行进行集中解析, 所以设置在设备中的命令行解析器需存储并管理所有执行单元的命令集,一方面,由于不同的执行单元可能具有相同的命令或语法上互相冲突的命令,可能导致命令行解析器在进行相应的解析时出现解析错误;另一方面,当任意的执行单元因卸载或升级而需修改其命令集时,均需对命令行解析器中庞大的命令集进行修改,维护难度大。

发明内容
针对上述缺陷,本发明提供一种命令行处理系统及方法,以实现对命令行进行可靠解析并且维护方便。根据本发明的一方面,提供一种命令行处理系统,包括至少一个界面终端,用于获取用户输入的命令行,并将所述命令行发送至命令行服务器;所述命令行服务器,与所述至少一个界面终端连接,用于从所述界面终端接收所述命令行,并将所述命令行发送至功能模块;至少两个所述功能模块,与所述命令行服务器连接,用于接收所述命令行,并对所述命令行进行解析。根据本发明的另一方面,还提供一种基于本发明命令行处理系统的命令行处理方法,包括界面终端获取用户输入的命令行,并将所述命令行发送至命令行服务器;所述命令行服务器从所述界面终端接收所述命令行,并将所述命令行发送至功能模块;所述功能模块接收所述命令行,并对所述命令行进行解析。根据本发明的命令行处理系统及方法,由于命令行服务器在接收到界面终端获取的命令行后,不对命令行进行详细解析,将其发送至与其连接的至少两个功能模块,以由各功能模块根据各自的命令集对命令行进行解析,所以实现了命令行的分散解析,克服了利用一个命令行解析器对命令行进行集中解析所导致的命令集之间存在冲突或维护困难的缺陷,即不会因为不同的功能模块具有相同的命令或语法上互相冲突的命令而导致命令行解析器在进行相应的解析时出现解析错误;而且,当任意的功能模块因卸载或升级而需修改其命令集时,仅需对该功能模块的命令集进行修改,易于维护。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明命令行处理系统的系统架构图。图2为图1中的命令行服务器执行命令行处理的流程示意图。图3为图1中的功能模块对命令行进行解析操作的流程示意图。图4为图1中的功能模块对命令行进行执行操作的流程示意图。图5为本发明命令行处理方法的流程示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图1为本发明命令行处理系统的系统架构图。如图1所示,该命令行处理系统包括至少一个界面终端,命令行服务器和至少两个功能模块。其中,至少一个界面终端用于获取用户输入的命令行;命令行服务器与所述至少一个界面终端连接,用于从所述界面终端接收所述命令行,并将所述命令行发送至功能模块;至少两个功能模块与所述命令行服务器连接,用于接收所述命令行,并对所述命令行进行解析。下面以至少一个界面终端包括第1界面终端和第2界面终端,至少两个功能模块包括第1功能模块、第2功能模块、第3功能模块和第4功能模块为例对本实施例的命令行处理系统进行详细说明。具体地,在执行命令行处理过程中,命令行服务器启动一个命令行服务进程,各界面终端分别启动一个界面终端进程,各功能模块分别启动一个功能模块进程,且命令行服务进程可分别与界面终端进程和功能模块进程进行通信,其通信方式可采用现有技术中的任意进程间通信方式来实现。命令行服务进程与第1界面终端的第1界面终端进程和第2界面终端的第2界面终端进程进行通信。以第1界面终端进程为例,当用户要输入命令行时,第1界面终端进程进入命令行编辑界面,并向命令行服务进程发送建立连接请求,以使命令行服务进程响应该连接请求建立起两者之间的连接;第1界面终端进程在与命令行服务进程建立连接后, 在命令行编辑界面提示用户输入命令行;用户在命令行编辑界面输入待处理的命令行后, 第1界面终端进程获取该命令行,并利用进程间通信方式将所获取的命令行发送至命令行服务进程。图2为图1中的命令行服务器执行命令行处理的流程示意图。如图2所示,命令行服务进程所涉及的消息事件包括终端控制事件、终端输入事件、模块控制事件和模块信息事件,命令行服务进程通过采用事件调度方式来处理这些消息事件,以避免造成命令行服务进程阻塞。其中,终端控制事件例如包括第1界面终端进程和第2界面终端进程向命令行服务进程发送的建立连接请求和撤销连接请求。命令行服务进程接收到终端控制事件后对发送该终端控制事件的终端执行相应的终端控制,例如响应第1界面终端进程发送的建立连接请求建立与第1界面终端进程的连接;并在与第1界面终端进程建立连接后接收到第1 界面终端进程发送的撤销连接请求时,断开与第1界面终端进程的连接。终端输入事件例如包括与命令行服务进程建立连接的界面终端向命令行服务进程发送的待处理的命令行。命令行服务进程例如从第1界面终端进程接收待处理的命令行后,将命令行发送至与其连接的全部或部分功能模块进程。具体地,命令行服务进程例如将命令行同时发送至第1功能模块进程、第2功能模块进程、第3功能模块进程和第4功能模块进程,以由四个功能模块进程对命令行进行并行处理。模块控制事件例如包括第1功能模块进程至第4功能模块进程向命令行服务进程发送的建立连接请求和撤销连接请求。命令行服务进程接收到模块控制事件后对发送该模块控制事件的功能模块进程执行相应的模块控制,例如响应第1功能模块进程发送的建立连接请求建立与第1功能模块进程的连接,并在与第1功能模块进程建立连接后接收到第 1功能模块进程发送的撤销连接请求时,断开与第1功能模块进程的连接。模块信息事件例如包括命令行服务进程在将命令行发送至功能模块进程后,从功能模块进程接收的模块反馈信息。具体地,反馈信息例如包括解析信息、帮助信息、错误信息和执行结果信息。其中解析信息为功能模块进程能够对命令行进行成功解析向命令行服务进程反馈的提示信息;错误信息为功能模块进程无法成功解析命令行时向命令行服务进程反馈的提示信息;帮助信息为功能模块进程接收到用于请求帮助的命令行时所返回的对应于指定命令的帮助信息;执行结果信息为功能模块进程在执行命令行后所返回的执行结果。命令行服务进程接收到模块反馈信息后,对模块反馈信息进行处理,并检测当前反馈信息是否完整。例如当命令行服务进程将命令行发送给多个功能模块进程时,判断是否有至少一个功能模块进程返回解析信息,若是,则命令行服务进程认为该命令行是解析成功的,忽略其余错误信息,暂时不向界面终端进程反馈信息,并继续等待这些功能模块进程返回执行结果信息,即等待下一次命令行服务进程调度模块信息事件,直至收到全部返回解析信息的功能模块进程所返回的执行结果信息时,认为信息完整,将这些执行结果信息返回给界面终端进程;若已收到所有功能模块进程返回的错误信息,则认为信息完整,直接向终端返回错误信息。在图1所示的命令行处理系统中,功能模块的功能模块进程用于对从命令行服务进程接收的命令行进行解析操作,优选地,当解析成功时还对解析后的命令行进行执行操作,解析操作和执行操作的具体流程如图3和图4所示,其中,图3为图1中的功能模块对命令行进行解析操作的流程示意图,图4为图1中的功能模块对命令行进行执行操作的流程示意图。如图3所示,功能模块进程启动后,开始初始化,并通过向命令行服务进程发送建立连接请求来连接到命令行服务进程;建立连接后,功能模块进程接收到命令行服务进程发送的命令行解析请求,响应该请求对相应的命令行进行解析,并判断解析是否可执行;若否,则直接向命令行服务进程反馈错误信息;若是,则将解析结果放入执行队列,并向命令行服务进程反馈解析信息。如图4所示,功能模块进程在执行命令时,顺次从执行队列中取出解析结果,执行命令,并向命令行服务进程反馈执行结果。在上述实施例的命令行处理系统中,界面终端、命令行服务器和功能模块可以集成设置在一个网络设备中,也可以根据需要分散设置在不同的网络设备中。根据上述实施例的命令行处理系统,由于命令行服务器在接收到界面终端获取的命令行后,不对命令行进行详细解析,将其发送至与其连接的至少两个功能模块,以由各功能模块根据各自的命令集对命令行进行解析,所以实现了命令行的分散解析,克服了利用一个命令行解析器对命令行进行集中解析所导致的命令集之间存在冲突或维护困难的缺陷。而且,一条命令行可以被送到不同的功能模块中去解析,不同界面终端获取的不同用户输入的命令行也可以被送到同一个功能模块中去解析,这种命令行的处理可完全由系统自动实现,无需用户预先指定命令行由哪个功能模块来解析。此外,当功能模块还用于若解析成功则执行解析后的命令行时,由于功能模块兼具解析和执行功能,其在对命令行进行处理时不影响其他功能模块,所以其他功能模块也可同时进行命令行的解析和执行,提高了系统效率。尤其当应用于由多个用户通过多个界面终端同时输入命令行的多进程环境时,上述实施例的命令行处理系统由于对命令行进行分散解析及执行所带来的优势就更为明显。进一步地,在上述实施例的命令行处理系统中,所述功能模块还用于在接收所述命令行之前,向所述命令行服务器发送携带有自身可支持的命令特征信息的注册信息,以使所述命令行服务器与所述功能模块建立连接,并记录所述功能模块可支持的命令特征信肩、ο具体地,功能模块的功能模块进程在建立到命令行服务器的命令行服务进程的连接时,需将自身所支持的命令特征信息,例如为自身所支持的命令集中命令的关键字,提供给命令行服务进程。并且,所述命令行服务器还用于在将所述命令行发送至功能模块之前,根据所述命令行的命令特征信息和各所述功能模块可支持的命令特征信息,对所述命令行与所述功能模块进行粗匹配处理,以将所述命令行发送至所匹配的功能模块。具体地,如图2中所示,命令行服务器的命令行服务进程在接收待处理的命令行之后,还对命令行进行预处理,例如为提取命令行中的前两个关键字,将这两个关键字与预先获取的各功能模块所支持的关键字相匹配,以根据功能模块进程所注册的命令特征信息,确定应该将命令行发送给哪些功能模块。在完成全部功能模块的关键字匹配后,将命令行发送到匹配的功能模块。若未查找到与命令行匹配的功能模块,则向命令行服务进程返回错误信息。根据上述实施例的命令行处理系统,通过由命令行服务器将命令行与功能模块进程进行粗匹配处理,仅将命令行发送到可能成功解析该命令行的功能模块中,而无需将命令行发送给全部的功能模块,减少了不必要的通信。
进一步地,在上述实施例的命令行处理系统中,所述命令行服务器还可用于若根据预定标准检测获知所述命令行存在错误,则向所述界面终端返回错误提示信息。具体地,命令行服务器的命令行服务进程例如通过预置的语法规则等检测用户输入的命令行是否正确。例如命令行服务进程检测获知所接收的命令行内容为空或包含非英文字符,则直接向界面终端的界面终端进程返回错误提示信息。根据上述实施例的命令行处理系统,能够避免命令行服务器对不合法的命令行进行不必要的操作,从而有效提高系统效率。进一步地,在上述实施例的命令行处理系统中,所述功能模块包括相同设置的主用功能模块和备用功能模块。具体地,命令行处理系统中的多个功能模块可以成对设置,即包括两两相同的功能模块,其中一个作为主用功能模块,另一个作为备用功能模块。由于这两个功能模块均与命令行服务器连接,同时接收命令行服务器发送的命令行,对命令行进行相同的解析和执行操作,所以该两个功能模块中具有相同的配置信息。因此,当作为主用功能模块发生故障需要进行主备倒换时,备用功能模块和主用功能模块具有完全相同的配置,无需建立额外的配置同步过程。因此,既能够通过主备倒换来有效提高系统的可靠性,又能够避免在主备倒换过程中由于配置同步不及时而导致的系统异常。此外,在上述实施例的命令行处理系统中,还可通过启动多个功能完全相同的功能模块对命令行进行并行处理,从而提高系统的性能。并且,由于命令行服务器在将命令行发送到多个功能模块中去执行时,需等待所有这些功能模块都反馈了结果信息后,才会向界面终端返回最终信息,以使用户进行下一步的配置,所以能够确保在由多个功能模块进程对命令行进行并行处理时,可保证配置的顺序一致性。图5为本发明命令行处理方法的流程示意图。如图5所示,该基于上述实施例的命令行处理系统的命令行处理方法包括以下步骤步骤S101,界面终端获取用户输入的命令行,并将所述命令行发送至命令行服务器;步骤S102,所述命令行服务器从所述界面终端接收所述命令行,并将所述命令行发送至功能模块;步骤S103,所述功能模块接收所述命令行,并对所述命令行进行解析。上述实施例的命令行处理方法的详细流程与上述实施例的命令行处理系统相同, 故此处不再赘述。根据本发明的命令行处理方法,由于命令行服务器在接收到界面终端获取的命令行后,不对命令行进行详细解析,将其发送至与其连接的至少两个功能模块,以由各功能模块根据各自的命令集对命令行进行解析,所以实现了命令行的分散解析,克服了利用一个命令行解析器对命令行进行集中解析所导致的命令集之间存在冲突或维护困难的缺陷。而且,一条命令行可以被送到不同的功能模块中去解析,不同界面终端获取的不同用户输入的命令行也可以被送到同一个功能模块中去解析,这种命令行的处理可完全由系统自动实现,无需用户预先指定命令行由哪个功能模块来解析。进一步地,在上述实施例的命令行处理方法中,所述功能模块接收所述命令行,并对所述命令行进行解析之后,还包括
若解析成功,则向所述命令行服务器返回解析信息,执行解析后的命令行,并向所述命令行服务器返回执行结果;若解析失败,则向所述命令行服务器返回错误信息。根据上述实施例的命令行处理方法,由于功能模块兼具解析和执行功能,其在对命令行进行处理时不影响其他功能模块,所以其他功能模块也可同时进行命令行的解析和执行,提高了系统效率。尤其当应用于由多个用户通过多个界面终端同时输入命令行的多进程环境时,上述实施例的命令行配置方法由于对命令行进行分散解析及执行所带来的优势就更为明显。进一步地,在上述实施例的命令行处理方法中,还包括所述命令行服务器在将所述命令行发送至功能模块后,若接收到至少一个功能模块返回的所述解析信息,则等待接收所述执行结果,并将所接收的执行结果返回所述界面终端;若接收到各所述功能模块返回的错误信息,则向所述界面终端返回错误提示信息。进一步地,在上述实施例的命令行处理方法中,所述功能模块接收所述命令行之前,还包括所述功能模块向所述命令行服务器发送携带有自身可支持的命令特征信息的注册信息,以使所述命令行服务器与所述功能模块建立连接,并记录所述功能模块可支持的命令特征信息;所述命令行服务器从所述界面终端接收所述命令行,并将所述命令行发送至功能模块具体包括所述命令行服务器从所述界面终端接收所述命令行;所述命令行服务器根据所述命令行的命令特征信息和各所述功能模块可支持的命令特征信息,对所述命令行与所述功能模块进行粗匹配处理;所述命令行服务器将所述命令行发送至所匹配的功能模块。根据上述实施例的命令行处理方法,通过由命令行服务器将命令行与功能模块进程进行粗匹配处理,仅将命令行发送到可能成功解析该命令行的功能模块中,而无需将命令行发送给全部的功能模块,减少了不必要的通信。进一步地,在上述实施例的命令行处理方法中,所述命令行服务器从所述界面终端接收所述命令行之后,还包括所述命令行服务器若根据预定标准检测获知所述命令行存在错误,则向所述界面终端返回错误提示信息。根据上述实施例的命令行处理方法,能够避免命令行服务器对不合法的命令行进行不必要的操作,从而有效提高系统效率。进一步地,在上述实施例的命令行处理方法中,所述功能模块包括相同设置的主用功能模块和备用功能模块。根据上述实施例的命令行处理方法,由于这两个相同设置的主用功能模块和备用功能模块均与命令行服务器连接,同时接收命令行服务器发送的命令行,对命令行进行相同的解析和执行操作,所以该两个功能模块中具有相同的配置信息。因此,当作为主用功能模块发生故障需要进行主备倒换时,备用功能模块和主用功能模块具有完全相同的配置, 无需建立额外的配置同步过程。因此,既能够通过主备倒换来有效提高系统的可靠性,又能够避免在主备倒换过程中由于配置同步不及时而导致的系统异常。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
权利要求
1.一种命令行处理系统,其特征在于,包括至少一个界面终端,用于获取用户输入的命令行,并将所述命令行发送至命令行服务器;所述命令行服务器,与所述至少一个界面终端连接,用于从所述界面终端接收所述命令行,并将所述命令行发送至功能模块;至少两个所述功能模块,与所述命令行服务器连接,用于接收所述命令行,并对所述命令行进行解析。
2.根据权利要求1所述的命令行处理系统,其特征在于,所述功能模块还用于若解析成功,则向所述命令行服务器返回解析信息,执行解析后的命令行,并向所述命令行服务器返回执行结果;若解析失败,则向所述命令行服务器返回错误信息。
3.根据权利要求2所述的命令行处理系统,其特征在于,所述命令行服务器还用于在将所述命令行发送至功能模块后,若接收到至少一个功能模块返回的所述解析信息,则等待接收所述执行结果,并将所接收的执行结果返回所述界面终端;若接收到各所述功能模块返回的错误信息,则向所述界面终端返回错误提示信息。
4.根据权利要求1至3任一所述的命令行处理系统,其特征在于,所述功能模块还用于在接收所述命令行之前,向所述命令行服务器发送携带有自身可支持的命令特征信息的注册信息,以使所述命令行服务器与所述功能模块建立连接,并记录所述功能模块可支持的命令特征信息;所述命令行服务器还用于在将所述命令行发送至功能模块之前,根据所述命令行的命令特征信息和各所述功能模块可支持的命令特征信息,对所述命令行与所述功能模块进行粗匹配处理,以将所述命令行发送至所匹配的功能模块。
5.根据权利要求1所述的命令行处理系统,其特征在于,所述命令行服务器还可用于若根据预定标准检测获知所述命令行存在错误,则向所述界面终端返回错误提示信息。
6.根据权利要求1至3任一所述的命令行处理系统,其特征在于,所述功能模块包括相同设置的主用功能模块和备用功能模块。
7.一种基于权利要求1至6中任一所述的命令行处理系统的命令行处理方法,其特征在于,包括界面终端获取用户输入的命令行,并将所述命令行发送至命令行服务器;所述命令行服务器从所述界面终端接收所述命令行,并将所述命令行发送至功能模块;所述功能模块接收所述命令行,并对所述命令行进行解析。
8.根据权利要求7所述的命令行处理方法,其特征在于,所述功能模块接收所述命令行,并对所述命令行进行解析之后,还包括若解析成功,则向所述命令行服务器返回解析信息,执行解析后的命令行,并向所述命令行服务器返回执行结果;若解析失败,则向所述命令行服务器返回错误信息。
9.根据权利要求8所述的命令行处理方法,其特征在于,还包括所述命令行服务器在将所述命令行发送至功能模块后,若接收到至少一个功能模块返回的所述解析信息,则等待接收所述执行结果,并将所接收的执行结果返回所述界面终端; 若接收到各所述功能模块返回的错误信息,则向所述界面终端返回错误提示信息。
10.根据权利要求7至9任一所述的命令行处理方法,其特征在于,所述功能模块接收所述命令行之前,还包括所述功能模块向所述命令行服务器发送携带有自身可支持的命令特征信息的注册信息,以使所述命令行服务器与所述功能模块建立连接,并记录所述功能模块可支持的命令特征信息;所述命令行服务器从所述界面终端接收所述命令行,并将所述命令行发送至功能模块具体包括所述命令行服务器从所述界面终端接收所述命令行;所述命令行服务器根据所述命令行的命令特征信息和各所述功能模块可支持的命令特征信息,对所述命令行与所述功能模块进行粗匹配处理;所述命令行服务器将所述命令行发送至所匹配的功能模块。
11.根据权利要求7所述的命令行处理方法,其特征在于,所述命令行服务器从所述界面终端接收所述命令行之后,还包括所述命令行服务器若根据预定标准检测获知所述命令行存在错误,则向所述界面终端返回错误提示信息。
12.根据权利要求7至9任一所述的命令行处理方法,其特征在于,所述功能模块包括相同设置的主用功能模块和备用功能模块。
全文摘要
本发明提供一种命令行处理系统及方法。该命令行处理系统包括至少一个界面终端,用于获取用户输入的命令行,并将所述命令行发送至命令行服务器;所述命令行服务器,与所述至少一个界面终端连接,用于从所述界面终端接收所述命令行,并将所述命令行发送至功能模块;至少两个所述功能模块,与所述命令行服务器连接,用于接收所述命令行,并对所述命令行进行解析。本发明提供的命令行处理系统及方法实现了对命令行进行可靠解析并且维护方便。
文档编号G06F9/44GK102279744SQ20111024562
公开日2011年12月14日 申请日期2011年8月24日 优先权日2011年8月24日
发明者陈锋 申请人:北京星网锐捷网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1