CN106227821B - 一种命令行命令的处理方法和装置 - Google Patents
一种命令行命令的处理方法和装置 Download PDFInfo
- Publication number
- CN106227821B CN106227821B CN201610586892.7A CN201610586892A CN106227821B CN 106227821 B CN106227821 B CN 106227821B CN 201610586892 A CN201610586892 A CN 201610586892A CN 106227821 B CN106227821 B CN 106227821B
- Authority
- CN
- China
- Prior art keywords
- command
- alias
- source
- tree
- name
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种命令行命令的处理方法和装置,以解决现有命令行配置中消耗内存且扩展性差的问题。所述的方法包括:配置视图对应源命令信息和别名信息的对应关系,生成配置文件,其中,源命令信息包括源命令名和源参数名,别名信息包括命令别名和参数别名;在加载命令行时,依据配置文件建立在视图下命令树和别名树的指向关系,其中,命令树依据源命令名和对应源参数名建立,别名树依据命令别名和对应参数别名建立;接收命令字符串;在别名树中查找命令字符串对应命令别名,依据指向关系查找命令树中对应源命令名和源参数名;依据源命令名和源参数名生成配置消息。通过配置文件实现不同风格命令的转换,减少内存的消耗,且扩展性较好。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种命令行命令的处理方法和一种命令行命令的处理装置。
背景技术
命令行是网络设备通用的基础配置方式,支持本地串口方式、远程拨号方式、远程终端协议(Telnet)方式、安全外壳协议(Secure Shell,SSH)方式等多种登录方式。命令行提示进行命令输入的一种工作提示符,可以使用字符进行输入,命令行的命令关键字使用通用语义可以自我解释,可以在帮助信息中直接提示对应功能的说明,支持批量化脚本配置,支持生成可编辑的配置文件在网络设备上进行配置恢复。
实际处理中,不同设备支持的命令行可能不同,即命令行风格不同。因此一种方式可以在设备内部支持两套命令行,不同的命令行风格对应到一个相同的配置管理对象(Configuration Management Object,CMO),在使用不同命令风格进行输入命令行时,需要分别按照各自的方式对命令行进行解析,确定对应的CMO。
但是,该方式中设备上需要支持两套不同的命令行到CMO的对应关系,因此就需要多消耗一倍的内存,且处理时需要分别解析。并且这种方式仅支持存储的两套命令行风格,而对于其他命令行风格无法解析,不具备可扩展性。
因此,目前需要本领域技术人员迫切解决的一个技术问题就是:提出一种命令行处理方法和装置,以解决现有命令行配置中消耗内存且扩展性差的问题。
发明内容
本发明实施例所要解决的技术问题是提供一种命令行命令的处理方法,以解决现有命令行配置中消耗内存且扩展性差的问题。
相应的,本发明实施例还提供了一种命令行命令的处理装置,用以保证上述方法的实现及应用。
为了解决上述问题,本发明公开了一种命令行命令的处理方法,包括:配置视图对应源命令信息和别名信息的对应关系,生成配置文件,其中,所述源命令信息包括源命令名和对应源参数名,所述别名信息包括命令别名和对应参数别名;在加载命令行时,依据所述配置文件建立在所述视图下命令树和别名树的指向关系,其中,所述命令树依据所述源命令名和对应源参数名建立,所述别名树依据所述命令别名和对应参数别名建立;接收命令字符串;在所述别名树中查找所述命令字符串对应命令别名,依据所述指向关系查找所述命令树中对应源命令名和源参数名;依据所述源命令名和源参数名生成配置消息。
可选的,所述配置视图对应源命令信息和别名信息的对应关系生成配置文件,包括:在所属视图下,确定源命令名和命令别名,以及源参数名和参数别名的对应关系;采用所属视图和对应关系确定至少一条记录,生成对应的配置文件。
可选的,所述在加载命令行时,依据所述配置文件建立在所述视图下命令树和别名树的指向关系,包括:在加载命令行时读取所述配置文件;依据所述记录确定所属视图,并确定所述视图对应的命令树;依据所述记录的对应关系生成所述命令树对应的别名树,并将所述别名树中源命令名和源参数名,分别指向所述命令树中对应命令别名和参数别名。
可选的,在所述别名树中查找所述命令字符串对应命令别名和/或参数别名,依据所述指向关系查找所述命令树中对应源命令名和源参数名,包括:对所述命令字符串进行分割,确定至少一个子字符串;采用第一个子字符串在所述别名树中匹配命令别名,确定所述命令别名在所述命令树中指向的源命令名;当存在多于一个子字符串时,从第二个子字符串开始在所述别名树中匹配参数别名,确定每个参数别名在所述命令树中指向的源参数名,其中,所述匹配包括完全匹配和/或模糊匹配。
可选的,还包括:当所述子字符串在所述别名树中未匹配到参数别名时,在所述命令树中遍历各节点,确定所述节点中与所述子字符串匹配的源参数名,直到未匹配的子字符串均匹配完毕。
可选的,还包括:当接收到第一参数时,依据所述第一参数显示对应的源命令名、源参数名、命令别名和/或参数别名。
可选的,依据所述源命令名和源参数名生成配置消息,包括:分别获取所述源命令名和源参数名对应的配置对象信息,依据所述配置对象信息生成配置消息。
本发明实施例还公开了一种命令行命令的处理装置,包括:文件配置模块,用于配置视图对应源命令信息和别名信息的对应关系,生成配置文件,其中,所述源命令信息包括源命令名和对应源参数名,所述别名信息包括命令别名和对应参数别名;指向建立模块,用于在加载命令行时,依据所述配置文件建立在所述视图下命令树和别名树的指向关系,其中,所述命令树依据源命令名和对应源参数名建立,所述别名树依据所述命令别名和对应参数别名建立;接收模块,用于接收命令字符串;源命令匹配模块,用于在所述别名树中查找所述命令字符串对应命令别名,依据所述指向关系查找所述源命令名和源参数名;配置消息生成模块,用于依据所述源命令名和源参数名生成配置消息。
可选的,所述文件配置模块,用于在所属视图下,确定源命令名和命令别名,以及源参数名和参数别名对应关系;采用所属视图和对应关系确定至少一条记录,生成对应的配置文件。
可选的,所述指向建立模块,包括:读取子模块,用于在加载命令行时读取所述配置文件;命令树确定子模块,用于依据记录确定所属视图,并确定所述视图对应的命令树;指向确定子模块,用于依据所述记录的对应关系生成所述命令树对应的别名树,并将所述别名树中源命令名和源参数名,分别指向所述命令树中对应命令别名和参数别名。
可选的,所述源命令匹配模块,包括:分割子模块,用于对所述命令字符串进行分割,确定至少一个子字符串;匹配子模块,用于获采用第一个子字符串在所述别名树中匹配命令别名,确定所述命令别名在所述命令树中指向的源命令名;当存在多于一个子字符串时,从第二个子字符串开始在所述别名树中匹配参数别名,确定每个参数别名在所述命令树中指向的源参数名,其中,所述匹配包括完全匹配和/或模糊匹配。
可选的,所述匹配子模块,还用于在所述子字符串在所述别名树中未匹配到参数别名时,在所述命令树中遍历各节点,确定所述节点中与所述子字符串匹配的源参数名,直到未匹配的子字符串均匹配完毕。
可选的,还包括:提示模块,用于当接收到第一参数时,依据所述第一参数显示对应的源命令名、源参数名、命令别名和/或参数别名。
可选的,所述配置消息生成模块,用于分别获取所述源命令名和源参数名对应的配置对象信息,依据所述配置对象信息生成配置消息。
与现有技术相比,本发明实施例包括以下优点:
可以配置视图对应源命令信息和别名信息的对应关系生成配置文件,其中,所述源命令信息包括源命令名和对应源参数名,所述别名信息包括命令别名和对应参数别名,从而通过配置文件对不同风格的命令进行转换,在加载命令行时,依据所述配置文件建立在所述视图下命令树和别名树的指向关系,从而在接收命令字符串后,在所述别名树中查找所述命令字符串对应命令别名,依据所述指向关系查找所述命令树中对应源命令名和源参数名,依据所述源命令名和源参数名生成配置消息。通过配置文件实现不同风格命令的转换,减少内存的消耗,且扩展性较好。
附图说明
图1是本发明实施例的一种命令树解析示意图;
图2是本发明实施例的一种命令行命令的处理方法的步骤流程图;
图3是本发明实施例的一种命令转换示意图;
图4是本发明实施例的另一种命令行命令的处理方法的步骤流程图;
图5是本发明实施例的另一种命令转换示意图;
图6是发明实施例的一种命令行命令的处理装置的结构框图;
图7是发明实施例的另一种命令行命令的处理装置的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明实施例中,为了便于用户使用,设备按功能对命令进行分类组织。功能分类与命令的视图对应,当要配置某功能的某条命令时,需要先进入这条命令所在的视图。每个视图都有唯一的、含义清晰的提示符,每视图下支持的命令不同,并且视图可以支持多级结构,即进入视图后还可以进入其下的子视图。
在每个视图下,该视图对应源命令名和源参数名可以按照树形结构保存,其中,源命令名和源参数名均对应有管理对象库(Mangemeng Object Resoposity,MOR)。例如对于命令display acl、display current-configuration、以及其他display xxxx命令,对应命令树结构如图1所示,以源命令名display为根节点,其后按照树形结构保存display对应各源参数名为下一级节点,并确定源命令名和各源参数名对应的MOR。
用户在输入命令时,如输入display acl命令,可以在该命令树中逐级进行匹配,首先在根节点匹配到源参数名display并确定对应MOR1,将该MOR1添加到配置消息,然后向下一级节点进行匹配,匹配到某一二级节点对应源参数名acl以及MOR2后,将该MOR2添加到配置消息,完成命令的匹配。然后可以将配置消息下发给应用模块,应用模块解析配置消息的MOR,处理命令行,显示对应信息。其中,每个源命令名和源参数名均对应MOR,但各图中未示出二级节点如源参数名current-configuration等的MOR。
本发明实施例中,不同的视图下均存在该视图所支持命令对应的命令树,从而通过输入命令匹配到对应MOR生成配置消息进行下发。
但是,不同网络公司的命令行的风格(或称格式)可能有较大差异,例如一种设备查看当前运行配置的命令为show running-configuration,另一种设备查看当前运行配置的命令为display current-configuration。而当前的网络组网应用下,不同厂商设备可能混合进行配置。因此需要对各种命令进行解析,便于执行相应的命令。
参照图2,示出了本发明实施例的一种命令行命令的处理方法的步骤流程图,具体可以包括如下步骤:
步骤202,配置视图对应源命令信息和别名信息的对应关系,生成配置文件。
由于组网中不同厂商设备可能混合进行配置,因此可以依据各设备的命令风格得到转换的配置文件。例如可以将一种风格的命令作为源命令,而其他风格的命令为待转换命令,根据需求按照命令风格编写对应转换的配置文件。其中,源命令信息包括源命令名和对应源参数名,所述别名信息包括命令别名和对应参数别名。
即对于选定风格对应的每个视图,确定该视图对应源命令名和源参数名,并且确定命令别名和参数别名,分别配置源命令名和命令别名的对应关系,以及各源参数名和参数别名的对应关系,依据该对应关系生成配置文件。从而对于各种风格命令的转换生成相应的配置文件即可,减少对内存的消耗且扩展性较好。
该配置文件中描述不同风格命令的对应关系,因此转换文件可以包括:命令所在视图,源命令名和源参数名,以及命令别名和参数别名。例如配置文件中一条记录为:view;command display;alias show则命令所在视图为view,源命令名为display,源参数名为show。
步骤204,在加载命令行时,依据所述配置文件建立在所述视图下命令树和别名树的指向关系。
设备在加载命令行时读取配置文件,其中,命令行可以理解为用于解释执行命令行中输入的命令的程序,即在加载该程序时读取配置文件,从而依据配置文件确定所属视图,并确定该视图对应的命令树,所述命令树依据源命令名和源参数名建立,相应的别名树依据命令别名和参数别名建立,即确定源命令名对应的命令别名,依据命令别名和参数别名生成别名树。在确定出命令树和别名树后,还建立命令树和别名树的指向关系,即对应关系确定别名树中命令别名和参数别名对应各节点,生成指向命令树中对应源命令名和源参数名对应的节点的指针。
例如图3所示,仅配置命令树中根节点(即源命令名)对应命令别名时,该别名树仅包括一个根节点即命令别名构成。又如,依据输入的命令确定命令别名和参数别名,依据别名树和命令树的指向关系,确定命令别名对应指正指向的源命令名,参数别名对应指正指向的源参数名。
步骤206,接收命令字符串。
步骤208,在所述别名树中查找所述命令字符串对应命令别名,依据所述指向关系查找所述命令树中对应源命令名和源参数名。
步骤210,依据所述源命令名和源参数名生成配置消息。
在需要执行命令时,可以接收命令字符串,该命令字符串是由用于构成待转换命令的字符构成的,即命令字符串中连续几个字符可以构成一个命令别名,还可以至少构成一个别名参数;其中,命令字符串可以具有空格、逗号等分隔符,通过分隔符分割的各子字符串分别对应命令别名、别名参数。
对于命令字符串,在所述别名树中查找其命令别名,然后依据指向关系查找指针指向的所述命令树中对应源命令名,若命令字符串还存在未匹配的子字符串,还可以在别名树中查找别名参数并指向命令树中对应源参数名,或者直接命令树中对应的源参数名。分别获取命令树中查找到的源命令名的配置对象信息(即MOR)和源参数名对应的MOR,采用各MOR生成配置消息下发给应用模块处理。
如图3的示例中,假设接收命令字符串“show acl”,可以在别名树下匹配到命令别名show,依据指针确定在命令树中对应的源命令名display。由于字符串“acl”未匹配到参数别名,可以直接对命令树进行遍历,即从display对应节点向后遍历下一级节点,查找到acl,从而完成display acl的匹配,得到display和acl分别对应的MOR生成配置消息,下发给应用模块处理。
综上所述,可以配置视图对应源命令信息和别名信息的对应关系生成配置文件,其中,所述源命令信息包括源命令名和对应源参数名,所述别名信息包括命令别名和对应参数别名,从而通过配置文件对不同风格的命令进行转换,在加载命令行时,依据所述配置文件建立在所述视图下命令树和别名树的指向关系,从而在接收命令字符串后,在所述别名树中查找所述命令字符串对应命令别名,依据所述指向关系查找所述命令树中对应源命令名和源参数名,依据所述源命令名和源参数名生成配置消息。通过配置文件实现不同风格命令的转换,减少内存的消耗,且扩展性较好。
参照图4,示出了本发明实施例的另一种命令行命令的处理方法的步骤流程图,具体可以包括如下步骤:
步骤402,在所属视图下,确定源命令名和命令别名,以及源参数名和参数别名的对应关系。
步骤404,采用所属视图和对应关系确定至少一条记录,生成对应的配置文件。
针对每个视图配置该视图下源命令名和命令别名的对应关系,以及源参数名和参数别名的对应关系,可以获取源命令名和源参数名,并确定命令别名和参数别名,建立相应的对应关系,即确定命令别名对应的源命令名,以及参数别名对应的源参数名。采用所属视图和对应关系确定相应的记录,包括:视图、源命令名和对应命令别名的记录,以及视图、由源命令名和源参数名构成的源命令,由命令别名和参数别名构成的待转换命令的一条或多条记录,采用各记录生成配置文件。
例如,配置文件中定义各记录如下:
view;command display;alias show//视图为view、源命令名display、命令别名show
view;command display acl;alias show access-list//视图为view、源命令名+源参数名display acl、命令别名+参数别名show access-list
view:command display current-configuration;alias show running//视图为view、源命令名+源参数名display current-configuration、命令别名+参数别名showrunning
view:command display this;alias print this//视图为view、源命令名+源参数名display thi、命令别名+参数别名print this
从而在配置文件中可以配置用于指示命令转换的记录。
步骤406,在加载命令行时读取所述配置文件。
步骤408,依据记录确定所属视图,并确定所述视图对应的命令树。
步骤410,依据所述记录的对应关系生成所述命令树对应的别名树,并将所述别名树中源命令名和源参数名,分别指向所述命令树中对应命令别名和参数别名。
在加载命令行时读取所述配置文件,对配置文件中的记录逐条解析,依据解析的记录确定所属视图,并确定所述视图对应的命令树,以及依据源命令名和源参数名确定别名树。其中,别名树可以包括一个或多个子树,例如,具有由一个节点构成的子树,又如包括由源命令名和源参数名等多个节点构成的子树,其中,一个源命令名对应多个命令别名,则每个命令别名分别对应一个子树。本实施例还依据各记录配置别名树中命令别名到命令树中对应源命令名的指针,以及配置别名树中参数别名到命令树中对应源参数名的指针,从而通过该针对指向对应的源命令名和源参数名,便于后续转换。
例如,依据上述记录得到命令树和别名树的结构如图5所示。其中,命令树以源命令名display为根节点,以源参数名acl、current-configuration和this为二级节点,即该根节点的子节点;别名树中包括两个命令别名show和print,则可以生成两个子树:一个子树以命令别名show为根节点,以参数别名access-list和running为二级节点;另一个子树以命令别名print为根节点,以参数别名this为二级节点。
步骤412,接收命令字符串。
步骤414,对所述命令字符串进行分割,确定至少一个子字符串。
步骤416,采用第一个子字符串在所述别名树中匹配命令别名,确定所述命令别名在所述命令树中指向的源命令名。
接收命令字符串,该命令字符串可以分成一个或多个子字符串执行匹配,不同子字符串之间可以采用分隔符分隔。因此,可以按照分隔符对命令字符串进行分割,确定至少一个子字符串,针对第一个子字符串,可以将该字符串匹配别名树中的命令别名,然后获取该命令别名的指针,确定该指针指向的命令树中指向的源命令名。
本实施中,对于子字符串的匹配包括完全匹配和/或模糊匹配。完全匹配可以是子字符串与命令关键字中字符完全相同时确认匹配;模糊匹配也可称为不完整匹配,即子字符串中全部字符与命令关键字中部分字符依次对应时确认匹配,即通过子字符串可以在唯一匹配到一个命令关键字即可。
步骤418,是否存在子字符串未匹配。
一个命令字符串通过分割可以确定一个或多个子字符串,其中,若仅有一个子字符串即为该命令字符串,若存在多个字符串,则在匹配完第一个子字符串对应命令别名及源命令名后,可以继续对其他子字符串进行匹配。则匹配过程中可以判断是否存在子字符串未匹配
若是,即不存在子字符串未匹配,执行步骤426;若否,即是否存在子字符串未匹配,执行步骤420。
步骤420,其他子字符串是否能够在所述别名树中匹配到参数别名。
当存在多于一个子字符串时,从第二个子字符串开始在所述别名树中匹配参数别名,判断其他子字符串是否能够在所述别名树中匹配到参数别名。
若是,即其他子字符串能够在所述别名树中匹配到参数别名,执行步骤422;若否,即其他子字符串不能够在所述别名树中匹配到参数别名,执行步骤424。
步骤422,确定每个参数别名在所述命令树中指向的源参数名。
在别名树中匹配参数别名后,依据指针查找到该参数别名在所述命令树中指向的源参数名,从而确定出该命令字符串对应依次匹配到的源命令名和源参数名。
步骤424,在所述命令树中遍历各节点,确定所述节点中与所述子字符串匹配的源参数名。
实际处理中,部分子字符串可能无法匹配到参数别名,因此在子字符串在所述别名树中未匹配到参数别名时,在所述命令树中对各级节点进行遍历,即以匹配到的源命令名(或匹配到参数别名)为起点查询其下一级节点,确定所述下一级节点中与所述子字符串匹配的源参数名,直到未匹配的子字符串均匹配完毕。
步骤426,分别获取所述源命令名和源参数名对应的配置对象信息,依据所述配置对象信息生成配置消息。
针对匹配到的源命令名和源参数名,分别获取其对应配置对象信息MOR,依据所述MOR生成配置消息。
基于上述各实施例,对于命令字符串可以通过如下方式确定:
1)完全匹配
如图5所示,假设命令字符串为show access-list,则分隔符为空格,通过分割确定子字符串包括“show”和“access-list”,第一个字符串“show”可以在别名树下匹配到命令别名show,依据指针确定在命令树中对应的源命令名display。然后在别名树中查找下一级节点以对子字符串“access-list”进行匹配,得到参数别名access-list,依据指针确定其在命令树中对应源参数名acl,从而完成通过命令字符串show access-list匹配到命令display acl,得到display和acl分别对应的MOR1和MOR2生成配置消息,下发给应用模块处理。
2)模糊匹配
本发明实施例还支持别名的不完整匹配。如图5所示,假设接收命令字符串“shacc”,通过分割确定包括子字符串“sh”“acc”,则第一个字符串“sh”与别名树中命令别名“show”部分匹配且只能唯一匹配到“show”,“acc”与参数别名“access-list”部分匹配且只能唯一匹配到“access-list”,则依据指针在命令树中对应匹配到源命令为display acl。
3)扩展匹配
本实施例对于无法匹配到参数别名的子字符串也可以进行匹配,即支持别名的参数扩展。假设接收命令字符串“sh acc num 2001”,子字符串“sh”“acc”通过与别名树、命令树的匹配得到源命令display acl,而子字符串“num”“2001”未匹配到参数别名,则可以在命令树中继续匹配二级节点acl的后续参数。
本发明一个可选实施例中,当接收到第一参数时,依据所述第一参数显示对应的源命令名、源参数名、命令别名和/或参数别名。该第一参数可以为帮助参数,从而可以支持别名帮助提示信息的显示,当接收到该第一参数时可以显示提示,具体举例如下:
1)未输入字符,仅输入第一参数,可以提示源命令名和命令别名,当然也可以提示进一步提示源参数名和参数别名。
例如第一参数为“?”,在该视图下输入?显示帮助信息,则可以帮助显示命令树的第一级命令元素和别名树的第一级命令元素,即
<view>?
display
show
…
2)输入字符和第一参数,可以提示与该输入字符相关的源命令信息和/或别名信息。
例如第一参数为“?”,在该视图下输入sh?,由于在别名树中匹配到了命令别名show,可以帮助显示该命令别名,即
<view>sh?
show
当然,也可以显示命令别名对应源命令名。
又如,在该视图下输入sh?,由于在别名树上匹配到了命令别名show,会帮助显示出别名树上命令别名的下一级命令元素即参数别名,以及命令树上与命令别名对应的源命令名的下一级命令元素,即源参数名,如:
<view>sh?
access-list
running
acl
current-configuration
this
从而通过第一参数显示对应的帮助提示信息,从而提示用户的输入,提高处理效率。
本发明实施例中,命令行风格的配置文件可以由维护人员根据自己的命令风格和个人习惯完成。为了便于使用,在同一组网内可以使用一份相同的配置文件,以保证维护人员连接到任何一台设备上都可以按照相同的命令行风格进行配置。
为了减少配置文件在各网络设备间同步的工作量,可以指定一个统一的文件地址URL(Uniform Resource Locator,统一资源定位符),通过连接网络各设备均可以从该URL上获取文件,解析生成别名树并指向命令树。
因此,本发明实施例可以使用单独构建别名树,并使用指针的方式与命令树中的对应源命令信息进行关联,节省内存并支持基于现有命令树结构的帮助、不完整输入等友好的输入特性。并且根据配置文件灵活切换命令行风格,并支持从远程服务器获取统一的配置文件,便于整个网络组网使用统一的命令行风格。
因此本发明实施例可以具有如下优点:
支持多级关键字命令行的风格切换:可以在命令行风格的配置文件中配置一条完整的多级关键字命令行定义别名信息,从而得到相应的别名树便于匹配。
支持不同风格命令行的不完整输入:若能够在别名树中唯一匹配到一条命令别名或参数别名,就可以使用简化的不完整命令输入别名。
友好的在线帮助:由于源命令信息和别名信息可以相同使用树形结构进行匹配,可以友好地帮助在匹配到当前的源命令信息和别名信息后,向当前的源命令的下一级节点对应命令参数进行匹配。
节省内存使用:本发明实施例中,别名树中保存了用户配置的别名信息,用指针实现别名树到命令树中关联,内存消耗量很少。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
在上述实施例的基础上,本实施例还提供了一种命令行命令的处理装置。
参照图6,示出了本发明实施例的一种命令行处理装置的结构框图,具体可以包括如下模块:
文件配置模块602,用于配置视图对应源命令信息和别名信息的对应关系,生成配置文件,其中,所述源命令信息包括源命令名和对应源参数名,所述别名信息包括命令别名和对应参数别名。
指向建立模块604,用于在加载命令行时,依据所述配置文件建立在所述视图下命令树和别名树的指向关系,其中,所述命令树依据所述源命令名和对应源参数名建立,所述别名树依据所述命令别名和对应参数别名建立。
接收模块606,用于接收命令字符串。
源命令匹配模块608,用于在所述别名树中查找所述命令字符串对应命令别名,依据所述指向关系查找所述源命令名和源参数名。
配置消息生成模块610,用于依据所述源命令名和源参数名生成配置消息。
综上所述,可以配置视图对应源命令信息和别名信息的对应关系生成配置文件,其中,所述源命令信息包括源命令名和对应源参数名,所述别名信息包括命令别名和对应参数别名,从而通过配置文件对不同风格的命令进行转换,在加载命令行时,依据所述配置文件建立在所述视图下命令树和别名树的指向关系,从而在接收命令字符串后,在所述别名树中查找所述命令字符串对应命令别名,依据所述指向关系查找所述命令树中对应源命令名和源参数名,依据所述源命令名和源参数名生成配置消息。通过配置文件实现不同风格命令的转换,减少内存的消耗,且扩展性较好。
参照图7,示出了本发明实施例的另一种命令行命令的处理装置的结构框图,具体可以包括如下模块:
文件配置模块602,用于在所属视图下,确定源命令名和命令别名,以及源参数名和参数别名对应关系;采用所属视图和对应关系确定至少一条记录,生成对应的配置文件。
指向建立模块604,用于在加载命令行时,依据所述配置文件建立在所述视图下命令树和别名树的指向关系,其中,所述命令树依据所述源命令名和对应源参数名建立,所述别名树依据所述命令别名和对应参数别名建立。
接收模块606,用于接收命令字符串。
提示模块612,用于当接收到第一参数时,依据所述第一参数显示对应的源命令名、源参数名、命令别名和/或参数别名。
源命令匹配模块608,用于在所述别名树中查找所述命令字符串对应命令别名,依据所述指向关系查找所述源命令名和源参数名。
配置消息生成模块610,用于分别获取所述源命令名和源参数名对应的配置对象信息,依据所述配置对象信息生成配置消息。
其中,所述指向建立模块604,包括:
读取子模块6042,用于在加载命令时读取所述配置文件。
命令树确定子模块6044,用于依据记录确定所属视图,并确定所述视图对应的命令树。
指向确定子模块6046,用于依据所述记录的对应关系生成所述命令树对应的别名树,并将所述别名树中源命令名和源参数名,分别指向所述命令树中对应命令别名和参数别名。
所述源命令匹配模块608,包括:
分割子模块6082,用于对所述命令字符串进行分割,确定至少一个子字符串。
匹配子模块6084,用于采用第一个子字符串在所述别名树中匹配命令别名,确定所述命令别名在所述命令树中指向的源命令名;当存在多于一个子字符串时,从第二个子字符串开始在所述别名树中匹配参数别名,确定每个参数别名在所述命令树中指向的源参数名,其中,所述匹配包括完全匹配和/或模糊匹配。
所述匹配子模块6084,还用于在所述子字符串在所述别名树中未匹配到参数别名时,在所述命令树中遍历各节点,确定所述节点中与所述子字符串匹配的源参数名,直到未匹配的子字符串均匹配完毕。
本发明实施例中,命令行风格的配置文件可以是由维护人员根据自己的命令风格和个人习惯完成。为了便于使用,在同一组网内可以使用一份相同的配置文件,以保证维护人员连接到任何一台设备上都可以按照相同的命令行风格进行配置。
为了减少配置文件在各网络设备间同步的工作量,可以指定一个统一的文件地址URL(Uniform Resource Locator,统一资源定位符),通过连接网络各设备均可以从该URL上获取文件,解析生成别名树并指向命令树。
因此,本发明实施例可以使用单独构建别名树,并使用指针的方式与命令树中的对应源命令信息进行关联,节省内存并支持基于现有命令树结构的帮助、不完整输入等友好的输入特性。并且根据配置文件灵活切换命令行风格,并支持从远程服务器获取统一的配置文件,便于整个网络组网使用统一的命令行风格。
因此本发明实施例可以具有如下优点:
支持多级关键字命令行的风格切换:可以在命令行风格的配置文件中配置一条完整的多级关键字命令行定义别名信息,从而得到相应的别名树便于匹配。
支持不同风格命令行的不完整输入:若能够在别名树中唯一匹配到一条命令别名或参数别名,就可以使用简化的不完整命令输入别名。
友好的在线帮助:由于源命令信息和别名信息可以相同使用树形结构进行匹配,可以友好地帮助在匹配到当前的源命令信息和别名信息后,向当前的源命令的下一级节点对应命令参数进行匹配。
节省内存使用:本发明实施例中,别名树中保存了用户配置的别名信息,用指针实现别名树到命令树中关联,内存消耗量很少。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种命令行处理方法和一种命令行处理装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (14)
1.一种命令行命令的处理方法,其特征在于,包括:
配置视图对应源命令信息和别名信息的对应关系,生成配置文件,其中,所述源命令信息包括源命令名和对应源参数名,所述别名信息包括命令别名和对应参数别名;
在加载命令行时,依据所述配置文件建立在所述视图下命令树和别名树的指向关系,其中,所述命令树依据所述源命令名和对应源参数名建立,所述别名树依据所述命令别名和对应参数别名建立;
接收命令字符串;
在所述别名树中查找所述命令字符串对应命令别名,依据所述指向关系查找所述命令树中对应源命令名和源参数名;
依据所述源命令名和源参数名生成配置消息。
2.根据权利要求1所述的方法,其特征在于,所述配置视图对应源命令信息和别名信息的对应关系生成配置文件,包括:
在所属视图下,确定源命令名和命令别名,以及源参数名和参数别名的对应关系;
采用所属视图和对应关系确定至少一条记录,生成对应的配置文件。
3.根据权利要求2所述的方法,其特征在于,所述在加载命令行时,依据所述配置文件建立在所述视图下命令树和别名树的指向关系,包括:
在加载命令行时读取所述配置文件;
依据所述记录确定所属视图,并确定所述视图对应的命令树;
依据所述记录的对应关系生成所述命令树对应的别名树,并将所述命令树中源命令名和源参数名,分别指向所述别名树中对应命令别名和参数别名。
4.根据权利要求3所述的方法,其特征在于,在所述别名树中查找所述命令字符串对应命令别名和/或参数别名,依据所述指向关系查找所述命令树中对应源命令名和源参数名,包括:
对所述命令字符串进行分割,确定至少一个子字符串;
采用第一个子字符串在所述别名树中匹配命令别名,确定所述命令别名在所述命令树中指向的源命令名;
当存在多于一个子字符串时,从第二个子字符串开始在所述别名树中匹配参数别名,确定每个参数别名在所述命令树中指向的源参数名,其中,所述匹配包括完全匹配和/或模糊匹配。
5.根据权利要求4所述的方法,其特征在于,还包括:
当所述子字符串在所述别名树中未匹配到参数别名时,在所述命令树中遍历各节点,确定所述节点中与所述子字符串匹配的源参数名,直到未匹配的子字符串均匹配完毕。
6.根据权利要求2所述的方法,其特征在于,还包括:
当接收到第一参数时,依据所述第一参数显示对应的源命令名、源参数名、命令别名和/或参数别名。
7.根据权利要求2所述的方法,其特征在于,依据所述源命令名和源参数名生成配置消息,包括:
分别获取所述源命令名和源参数名对应的配置对象信息,依据所述配置对象信息生成配置消息。
8.一种命令行命令的处理装置,其特征在于,包括:
文件配置模块,用于配置视图对应源命令信息和别名信息的对应关系,生成配置文件,其中,所述源命令信息包括源命令名和对应源参数名,所述别名信息包括命令别名和对应参数别名;
指向建立模块,用于在加载命令行时,依据所述配置文件建立在所述视图下命令树和别名树的指向关系,其中,所述命令树依据源命令名和对应源参数名建立,所述别名树依据所述命令别名和对应参数别名建立;
接收模块,用于接收命令字符串;
源命令匹配模块,用于在所述别名树中查找所述命令字符串对应命令别名,依据所述指向关系查找所述源命令名和源参数名;
配置消息生成模块,用于依据所述源命令名和源参数名生成配置消息。
9.根据权利要求8所述的装置,其特征在于,
所述文件配置模块,用于在所属视图下,确定源命令名和命令别名,以及源参数名和参数别名对应关系;采用所属视图和对应关系确定至少一条记录,生成对应的配置文件。
10.根据权利要求9所述的装置,其特征在于,所述指向建立模块,包括:
读取子模块,用于在加载命令行时读取所述配置文件;
命令树确定子模块,用于依据记录确定所属视图,并确定所述视图对应的命令树;
指向确定子模块,用于依据所述记录的对应关系生成所述命令树对应的别名树,并将所述命令树中源命令名和源参数名,分别指向所述别名树中对应命令别名和参数别名。
11.根据权利要求10所述的装置,其特征在于,所述源命令匹配模块,包括:
分割子模块,用于对所述命令字符串进行分割,确定至少一个子字符串;
匹配子模块,用于获采用第一个子字符串在所述别名树中匹配命令别名,确定所述命令别名在所述命令树中指向的源命令名;当存在多于一个子字符串时,从第二个子字符串开始在所述别名树中匹配参数别名,确定每个参数别名在所述命令树中指向的源参数名,其中,所述匹配包括完全匹配和/或模糊匹配。
12.根据权利要求11所述的装置,其特征在于,
所述匹配子模块,还用于在所述子字符串在所述别名树中未匹配到参数别名时,在所述命令树中遍历各节点,确定所述节点中与所述子字符串匹配的源参数名,直到未匹配的子字符串均匹配完毕。
13.根据权利要求9所述的装置,其特征在于,还包括:
提示模块,用于当接收到第一参数时,依据所述第一参数显示对应的源命令名、源参数名、命令别名和/或参数别名。
14.根据权利要求9所述的装置,其特征在于,
所述配置消息生成模块,用于分别获取所述源命令名和源参数名对应的配置对象信息,依据所述配置对象信息生成配置消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610586892.7A CN106227821B (zh) | 2016-07-21 | 2016-07-21 | 一种命令行命令的处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610586892.7A CN106227821B (zh) | 2016-07-21 | 2016-07-21 | 一种命令行命令的处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106227821A CN106227821A (zh) | 2016-12-14 |
CN106227821B true CN106227821B (zh) | 2019-08-06 |
Family
ID=57531486
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610586892.7A Active CN106227821B (zh) | 2016-07-21 | 2016-07-21 | 一种命令行命令的处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106227821B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106951213A (zh) * | 2017-03-27 | 2017-07-14 | 杭州迪普科技股份有限公司 | 一种命令解析方法及装置 |
CN107426041B (zh) * | 2017-09-21 | 2020-08-04 | 杭州迪普科技股份有限公司 | 一种解析命令的方法和装置 |
CN109358807A (zh) * | 2018-09-26 | 2019-02-19 | 郑州云海信息技术有限公司 | 一种目标cli的查询方法、查询系统及相关装置 |
CN110083597A (zh) * | 2019-03-16 | 2019-08-02 | 平安普惠企业管理有限公司 | 命令查询方法、装置、计算机设备和存储介质 |
CN110166277A (zh) * | 2019-04-09 | 2019-08-23 | 广州市高科通信技术股份有限公司 | 一种命令行命令树构建方法和命令行动态加载的方法 |
CN113922979B (zh) * | 2021-08-23 | 2023-07-04 | 北京天融信网络安全技术有限公司 | 网络安全设备配置系统、配置方法、计算机设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1402559A (zh) * | 2001-08-10 | 2003-03-12 | 华为技术有限公司 | 同时支持两种风格命令行配置的实现方法 |
CN1787459A (zh) * | 2005-12-22 | 2006-06-14 | 杭州华为三康技术有限公司 | 一种下发命令的方法和系统 |
CN1956394A (zh) * | 2006-11-13 | 2007-05-02 | 杭州华为三康技术有限公司 | 进行网络设备业务配置的方法及装置 |
CN101257402A (zh) * | 2008-01-17 | 2008-09-03 | 华为技术有限公司 | 设备实现自定义命令的方法及系统 |
CN101964923A (zh) * | 2009-07-23 | 2011-02-02 | 中兴通讯股份有限公司 | 交互式命令的配置系统及方法 |
CN103457761A (zh) * | 2013-07-17 | 2013-12-18 | 国家电网公司 | 一种跨平台命令行配置接口的实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6907572B2 (en) * | 2001-08-10 | 2005-06-14 | Occam Networks | Command line interface abstraction engine |
-
2016
- 2016-07-21 CN CN201610586892.7A patent/CN106227821B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1402559A (zh) * | 2001-08-10 | 2003-03-12 | 华为技术有限公司 | 同时支持两种风格命令行配置的实现方法 |
CN1787459A (zh) * | 2005-12-22 | 2006-06-14 | 杭州华为三康技术有限公司 | 一种下发命令的方法和系统 |
CN1956394A (zh) * | 2006-11-13 | 2007-05-02 | 杭州华为三康技术有限公司 | 进行网络设备业务配置的方法及装置 |
CN101257402A (zh) * | 2008-01-17 | 2008-09-03 | 华为技术有限公司 | 设备实现自定义命令的方法及系统 |
CN101964923A (zh) * | 2009-07-23 | 2011-02-02 | 中兴通讯股份有限公司 | 交互式命令的配置系统及方法 |
CN103457761A (zh) * | 2013-07-17 | 2013-12-18 | 国家电网公司 | 一种跨平台命令行配置接口的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106227821A (zh) | 2016-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106227821B (zh) | 一种命令行命令的处理方法和装置 | |
CN108521858B (zh) | 基于分组的数据通信的设备标识符相关操作处理 | |
US8478800B1 (en) | Log streaming facilities for computing applications | |
CN102346747B (zh) | 在数据模型中查找参数的方法 | |
WO2021023149A1 (zh) | 一种动态返回报文的方法和装置 | |
US20240015071A1 (en) | Method and apparatus for holistic rendering of cloud network configuration | |
CN104460592B (zh) | 一种基于中控系统的控制方法及装置 | |
JP6506686B2 (ja) | ファイル記述子を自動的に管理する技法 | |
CN112311571B (zh) | 网络拓扑生成方法及装置、电子设备和非暂态存储介质 | |
CN109379742A (zh) | 一种无线局域网的接入方法、装置和存储介质 | |
CN107948060A (zh) | 一种新型的路由表建立、以及ip路由查找方法和装置 | |
CN101794318A (zh) | Url解析方法及设备 | |
CN104967678B (zh) | 对智能设备进行控制的方法及装置 | |
JP2004046810A (ja) | クライアント/サーバ環境におけるアプリケーションステップのディスパッチ方法及びサービスポータルシステム | |
CN110380902B (zh) | 拓扑关系生成方法、装置、电子设备及存储介质 | |
US20220342742A1 (en) | Graphical management of big data pipelines | |
KR102555258B1 (ko) | 사용자 인식방법, 장치, 저장매체 및 전자기기 | |
CN110311826A (zh) | 网络设备配置方法及装置 | |
CN115408569A (zh) | 一种进程溯源树简化方法、装置、设备及介质 | |
Narang | Standards matters/mentor's musings on IoT 2.0: IoT coming of age | |
CN108287887A (zh) | 一种多模匹配方法和装置 | |
CN107222859A (zh) | 一种设备联网的方法及装置 | |
CN109726338B (zh) | 页面体裁划分方法、装置、可读存储介质及电子设备 | |
CN110502168A (zh) | 功能菜单生成方法、装置、服务器、终端及存储介质 | |
CN111083701A (zh) | 一种软件定义无线传感器网络中的硬件身份认证方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Applicant after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou science and Technology Development Zone, Zhejiang high tech park, No. six and road, No. 310 Applicant before: Huasan Communication Technology Co., Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |