一种命令行接口的命令构造与解析方法技术

技术编号:8271272 阅读:195 留言:0更新日期:2013-01-31 03:27
本发明专利技术公开了一种命令行接口的命令构造与解析方法,命令构造包括以下步骤:构造主命令结点,包括的关键元素有命令名称、命令类型、命令的回调函数和命令的帮助信息;构造子命令结点,在命令字符串中相同位置的子命令都视为同一个命令层级的子命令,这些子命令结构体组成一个子命令结构数组供命令系统解析过程调用,每一个子命令结点包括的必要元素有命令名称、命令类型、命令的回调函数和命令的帮助信息,其中,针对不同的子命令结点的不同的匹配类型,包括命令匹配和整型匹配,子命令结构体中给出该子命令结点的命令类型。

【技术实现步骤摘要】
本专利技术属于嵌入式设备开发
,特别涉及一种嵌入式网络设备的命令行接口的命令构造与解析方法
技术介绍
命令行接口(Co_and Line Interface)简称CLI,是用户与操作系统或应用程序之间的一种基于文本输入的命令接口。它通过输入命令来实现对系统的管理和维护,并接收系统的响应。CLI是商业化电信网络设备中必备的管理控制方法,与SNMP、基于Web等管理方式 所不同的是,CLI通过一个普通的串口应用程序或Telnet程序使用键盘输入命令来实现对设备的监控。虽然对网络设备的配置和管理也可以通过其他多种方式实现,可以使用纯字符形式的命令行和菜单,也可以使用图形界面的web浏览器或专门的网管软件。但无论何种网络设备,其基于Telnet (或者SSH)协议的CLI命令行方式提供了比其支持的任何网管功能更为完备的管理能力。尤其是,当网络出现问题,通过其他管理方式都无法访问到被管理设备时,我们依然可以通过完全带外的CONSOLE 口使用CLI命令对被管理设备进行信息采集和排障,而这点是所有其他管理方式所不具备的。相比较而言,CLI命令行方式的功能更强大,但掌握起来难度也更大些。由于嵌入式网络设备种类较多,不同种类的设备通常需要有针对性的合适的定制化的命令行接口命令体系,以方便调试和关系。现有的方法都是针对设备特点和要求从头编制命令行,工作量比较大,而且很多都是重复劳动。
技术实现思路
本专利技术的目的是提供了一套完整的命令构造与命令解析方法,可用于实现网络设备配置与管理时必须为用户提供的命令行接口。本专利技术的技术方案是,一种命令行接口的命令构造与解析方法,命令构造包括以下步骤步骤I. 1,构造主命令结点,包括的关键元素有命令名称、命令类型、命令的回调函数和命令的帮助信息;步骤I. 2,构造子命令结点,在命令字符串中相同位置的子命令都视为同一个命令层级的子命令,这些子命令结构体组成一个子命令结构数组供命令系统解析过程调用,每一个子命令结点包括的必要元素有命令名称、命令类型、命令的回调函数和命令的帮助信息,其中,针对不同的子命令结点的不同的匹配类型,包括命令匹配和整型匹配,子命令结构体中给出该子命令结点的命令类型;步骤I. 3,构造回调函数,并且将整个命令系统中各个零散分布的命令结点通过回调函数才联系到一起,即每一次匹配完成之后的命令操作,解析结束仍然跳往下一个子命令数组中查找下一层级的子命令结点,该过程由回调函数给出;步骤I. 4,注册主命令,通过注册主命令结构体的方式来把同一命令模式下的所有主命令结点连接成命令树,命令系统中根据命令模式的不同生成不同的命令树;命令解析包括以下步骤步骤2. I,根据命令模式查找到相应的命令树;步骤2. 2,以被解析命令的主命令名作为索引,遍历整个命令树;步骤2. 3,当存在命令名称完全匹配或者有且仅有一个部分匹配的结点时,则调用该命令结点的回调函数,否则解析结束并返回错误号;步骤2. 4,回调函数实现的操作分为两种一种为命令解析结束,执行相关的功能模块或返回错误号,另一种为继续下一层子命令的解析,·命令是否解析结束只要判断被解析命令字符串是否还有下一级命令参数存在,如果存在则需要继续往下解析,然后遍历回调函数中提供的子命令结构数组,查找能够匹配成功的子命令;步骤2. 5,当存在且仅有一个命令类型能匹配成功的子命令结点时,则调用该命令结点的回调函数,否则解析结束并返回错误号;步骤2. 6,采用子命令结点的回调函数与主命令结点的回调函数实现的操作一致,即判断命令是否结束或者继续下一层子命令的解析;步骤3. 7,子命令的解析过程采用一个递归调用的过程,存在匹配的情况下调用回调函数,反之返回错误号,该递归的解析过程一直到命令解析结束或者出错返回退出为止。本专利技术有益效果是,对于命令结点,命令系统中所有的命令都是由命令结点组合而成的,命令结点也分为两种主命令结点和子命令结点。分类的主要依据是各命令结点在命令字符串中的位置,命令字符串中的第一个结点为主命令结点,同一命令模式下不同的主命令结点组成为命令树,并且每个主命令结点是该命令在命令树上唯一的索引。除主命令结点之外的其它结点都是子命令结点。对于命令构造,每一条命令都是由一个主命令结点和若干个子命令结点组合而成的,而每一个命令结点中包含的主要元素有命令名称、命令类型、命令的回调函数以及命令的帮助信息等。各命令结点联系到一起的关键在于命令的回调函数,每个命令的回调函数都决定了该命令结点应该执行的操作,如判断命令是否结束,是否执行命令,是否需要查找下一个命令结点等。对于命令解析,命令系统根据用户所在的命令模式来查找相应的命令树,再在命令树上搜索输入命令的主命令结点,然后根据主命令结点中的回调函数来决定该命令是结束解析返回,还是继续往下解析。如果继续往下查找,则命令系统会根据主命令回调函数中提供的子命令结构数组的入口地址来查找主命令之后的子命令结点。如果匹配成功,刚调用子命令结点中提供的回调函数。再这样反复的轮循调用,直到整个命令字符串解析结束或者出错返回为止。对于本申请中用到的术语说明如下。主命令整个命令字符串中最开始的那个命令。子命令主命令之后的所以命令都为子命令。命令模式在不同提示符下的主命令为不同的命令模式,如在’ >’或’ #,这两种提示符下的命令就属于两个不同的命令模式。主命令树不同命令模式的主命令被命令系统链成了一个链表,命令系统根据命令模式在相应的链表上搜索主命令,这个链表就是主命令树。回调函数每个主、子命令都有三个回调函数的接口(普通命令的回调函数、no命令的回调函数和default命令的回调函数),回调函数的作用是当命令系统成功匹配到了相应的命令时调用执行相应的处理。附图说明图I、本专利技术的系统模块结构2、本专利技术解析命令的流程图具体实施方式·如图I所示,本专利技术实际包含命令构造和命令解析两个部分,且其中命令解析依赖于命令构造。具体实施过程如下一、命令构造的实施命令构造的实际过程是构造并完善该命令主命令结点与子命令结点,并将主命令结点注册生成命令树的过程。步骤I. I :构造主命令结点,主命令结点是一个包含有主命令重要相关信息的结构体,如命令名称、命令等级、所属命令树、回调函数接口和命令注解等。以ping ip_addr命令为例,其中ping即为该命令的主命令结点,ip_addr即为子命令结点。步骤I. 2 :构造主命令结点的回调函数,回调函数是命令解析过程中的关键角色。回调函数分为三种命令回调函数,no前缀命令回调函数和default前缀命令回调函数。后两种回调函数是为实现取消功能和默认配置时提供的函数接口。回调函数的主要功能是处理命令是否结束、是否继续向下解析,且指定下一个命令结点的空间地址。步骤2. I :构造子命令结点,子命令结点的构造与主命令结点的构造类似,需要完善结构体中的命令名称、命令等级、命令类型、回调函数接口和命令注解等。与主命令结点相区别的是子命令结点不再有命令树的属性,因为子命令结点是命令系统中一个个零散的存在,它可以通过上一级命令结点的回调函数被组合到任意一条命令当中。同时由于子命令的特殊性,子命令结点的匹配方式不再是单纯的字符匹配,增加了不同命令类型的匹配方式。步骤2.2 :构造子命令结点的回调本文档来自技高网...

【技术保护点】
一种命令行接口的命令构造与解析方法,其特征在于,命令构造包括以下步骤:步骤1.1,构造主命令结点,包括的关键元素有命令名称、命令类型、命令的回调函数和命令的帮助信息;步骤1.2,构造子命令结点,在命令字符串中相同位置的子命令都视为同一个命令层级的子命令,这些子命令结构体组成一个子命令结构数组供命令系统解析过程调用,每一个子命令结点包括的必要元素有命令名称、命令类型、命令的回调函数和命令的帮助信息,其中,针对不同的子命令结点的不同的匹配类型,包括命令匹配和整型匹配,子命令结构体中给出该子命令结点的命令类型;步骤1.3,构造回调函数,并且将整个命令系统中各个零散分布的命令结点通过回调函数才联系到一起,即每一次匹配完成之后的命令操作,解析结束仍然跳往下一个子命令数组中查找下一层级的子命令结点,该过程由回调函数给出;步骤1.4,注册主命令,通过注册主命令结构体的方式来把同一命令模式下的所有主命令结点连接成命令树,命令系统中根据命令模式的不同生成不同的命令树;命令解析包括以下步骤:步骤2.1,根据命令模式查找到相应的命令树;步骤2.2,以被解析命令的主命令名作为索引,遍历整个命令树;步骤2.3,当存在命令名称完全匹配或者有且仅有一个部分匹配的结点时,则调用该命令结点的回调函数,否则解析结束并返回错误号;步骤2.4,回调函数实现的操作分为两种:一种为命令解析结束,执行相关的功能模块或返回错误号,另一种为继续下一层子命令的解析,命令是否解析结束只要判断被解析命令字符串是否还有下一级命令参数存在,如果存在则需要继续往下解析,然后遍历回调函数中提供的子命令结构数组,查找能够匹配成功的子命令;步骤2.5,当存在且仅有一个命令类型能匹配成功的子命令结点时,则调用 该命令结点的回调函数,否则解析结束并返回错误号;步骤2.6,采用子命令结点的回调函数与主命令结点的回调函数实现的操作一致,即判断命令是否结束或者继续下一层子命令的解析;步骤2.7,子命令的解析过程采用一个递归调用的过程,存在匹配的情况下调用回调函数,反之返回错误号,该递归的解析过程一直到命令解析结束或者出错返回退出为止。...

【技术特征摘要】
1.一种命令行接口的命令构造与解析方法,其特征在于,命令构造包括以下步骤 步骤I. 1,构造主命令结点,包括的关键元素有命令名称、命令类型、命令的回调函数和命令的帮助信息; 步骤I. 2,构造子命令结点,在命令字符串中相同位置的子命令都视为同一个命令层级的子命令,这些子命令结构体组成一个子命令结构数组供命令系统解析过程调用, 每一个子命令结点包括的必要元素有命令名称、命令类型、命令的回调函数和命令的帮助信息,其中, 针对不同的子命令结点的不同的匹配类型,包括命令匹配和整型匹配,子命令结构体中给出该子命令结点的命令类型; 步骤I. 3,构造回调函数,并且将整个命令系统中各个零散分布的命令结点通过回调函数才联系到一起,即每一次匹配完成之后的命令操作,解析结束仍然跳往下一个子命令数组中查找下一层级的子命令结点,该过程由回调函数给出; 步骤I. 4,注册主命令,通过注册主命令结构体的方式来把同一命令模式下的所有主命令结点连接成命令树,命令系统中根据命令模式的不同生成不同的命令树; 命令解析包括以下步骤 步骤2....

【专利技术属性】
技术研发人员:杨敏
申请(专利权)人:上海师范大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1