CN101924656A - 一种基于动态配置的网络设备cli实现方法和装置 - Google Patents

一种基于动态配置的网络设备cli实现方法和装置 Download PDF

Info

Publication number
CN101924656A
CN101924656A CN2010102633335A CN201010263333A CN101924656A CN 101924656 A CN101924656 A CN 101924656A CN 2010102633335 A CN2010102633335 A CN 2010102633335A CN 201010263333 A CN201010263333 A CN 201010263333A CN 101924656 A CN101924656 A CN 101924656A
Authority
CN
China
Prior art keywords
attribute
program
node
cli
match
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.)
Granted
Application number
CN2010102633335A
Other languages
English (en)
Other versions
CN101924656B (zh
Inventor
张凤羽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Topsec Technology Co Ltd
Original Assignee
Beijing Topsec Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Topsec Technology Co Ltd filed Critical Beijing Topsec Technology Co Ltd
Priority to CN 201010263333 priority Critical patent/CN101924656B/zh
Publication of CN101924656A publication Critical patent/CN101924656A/zh
Application granted granted Critical
Publication of CN101924656B publication Critical patent/CN101924656B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种基于动态配置的网络设备CLI实现方法和装置,在CLI主程序启动时,向内存中加载配置文件,将配置文件递归解析成命令集树,在命令集树中对用户输入的命令进行匹配,执行匹配成功的命令。CLI主程序启动后,通过对配置文件的解析生成命令集树,开发过程中开发人员只需要对CLI命令最终调用的程序进行调试即可、不需要对CLI程序的加载、解析、匹配等过程进行编译,大大节省了开发时间与开发工作量。当要对CLI的命令结构进行更改和新增命令行时,只需更改对应的配置文件即可,不需要编译,即改即生效。本发明克服了现有技术中zebra命令行方法开发与调试难度大且开发结果不能动态修改的缺陷。

Description

一种基于动态配置的网络设备CLI实现方法和装置
技术领域
本发明涉及系统运行监控技术领域,尤其涉及一种基于动态配置的网络设备CLI(Command Line Interface,命令行界面)实现方法和装置。
背景技术
CLI是可在用户提示符下键入可执行指令的界面。CLI界面是思科CISCO、朗讯科技LUCENT、华为等厂商生产的路由器产品都能提供的界面,已经成为路由器产品的标准。由于使用CLI时只需要串行口,CLI具有使用要求低、操作容易以及功能扩充方便的优点。特别是通过CLI界面对数量较多的路由器设备进行配置的时候,可以使用其中的复制COPY/粘贴PASTE功能很快完成对所有路由器的配置工作,不需要通过IE浏览器一台台配置。
目前普遍使用的CLI开发方法采用的是zebra命令行,开源的Zebra项目提供了一个类似思科CISCO命令行的分级多用户命令解析引擎VTY(Virtual terminal[aka TeletYpe],虚拟终端)。它是类似于shell的虚拟终端接口,负责对访问的安全验证、数据缓冲、命令解析、模式切换及命令调用。每一次接口访问都会发起一个对应的VTY。VTY会根据用户优先级初始化并挂载相应的命令集Com--mand Node。命令集Command Node里面以链表的形式包含了该用户可以访问和使用的命令。用户通过各种接口访问VTY,VTY解析用户发过来的每个命令,并且通过命令集链表找到并执行Command响应函数。这样,通过访问VTY实现基于命令集的管理功能。
Zebra项目虽然内嵌了许多处理各种协议的命令集,但是网络设备开发过程中常常需要扩展命令集以适应路由器设备的需求。当向Zebra或类似的CLI框架中添加新的命令时需要更改zebra的源代码,编写大量的C语言函数,开发与调试难度都很大,开发周期长,而且开发结果不能动态修改,同时由于Zebra等CLI框架往往都是在GPL(General Public License,通用性公开许可证)下发布的,网络设备厂商需要对外公开其对zebra的修改并开放源码,这是很多厂商无法接受的。
发明内容
本发明要解决的技术问题是,提供一种基于动态配置的网络设备CLI实现方法和装置,克服现有技术中zebra命令行方法开发与调试难度大且开发结果不能动态修改的缺陷。
本发明采用的技术方案是,所述基于动态配置的网络设备CLI实现方法,包括:
在CLI主程序启动时,向内存中加载配置文件;
将所述配置文件递归解析成命令集树;
在所述命令集树中对用户输入的命令进行匹配,执行匹配成功的命令。
所述配置文件包括两类命令元素:关键字节点和参数节点,所述关键字节点和所述参数节点的可选属性均包括:可执行属性;
一条命令中的最终节点须具有所述可执行属性,可执行属性的内容为可执行程序。
所述在命令集树中对用户输入的命令进行匹配的过程包括:
将用户输入的命令元素与所述命令集树上的命令节点进行一致性匹配,与所述命令集树上的参数节点任意匹配。
所述执行匹配成功的命令的过程包括:
将匹配成功的命令转换成指向被调用程序的字符串;
当指向被调用程序的字符串调用可执行属性指向的可执行程序时,若所述匹配成功的命令中有可执行属性限定的参数节点,则将该参数节点的输入值作为参数输入给所述可执行程序。
所述参数节点的可选属性进一步包括:检查属性和列表属性,所述检查属性的内容是检查程序,所述列表属性的内容是列表数值;
所述执行匹配成功的命令的过程进一步包括:
当指向被调用程序的字符串调用检查属性指向的检查程序时,若所述匹配成功的命令中有检查属性限定的参数节点,则将所述参数节点的输入值作为所述检查程序的执行对象;
在执行所述匹配成功的命令中的被调用程序时,若所述匹配成功的命令中有列表属性限定的参数节点,则判断所述参数节点的输入值是否在列表属性所列的数值当中,若是,则将所述参数节点的输入值作为参数输入给被调用的程序,否则不执行被调用程序。
作为一种优选的技术方案,所述配置文件为带有初始化函数的动态库;
在CLI主程序启动时,所述加载配置文件的过程是:向内存中加载所有的所述带有初始化函数的动态库;
所述将配置文件递归解析成命令集树的过程是:以命令集树指针为参数调用每个动态库中的初始化函数,所述初始化函数完成向所述命令集树中加载该动态库实现的命令节点。
所述执行匹配成功的命令的过程包括:
在执行匹配成功的命令时,直接运行所述匹配成功的命令中可执行属性、检查属性或列表属性对应的函数指针,以完成对所述匹配成功的命令的操作。
本发明还提供一种基于动态配置的网络设备CLI实现装置,包括如下组成部分:
加载模块,用于在CLI主程序启动时,向内存中加载配置文件;
文件解析模块,用于将配置文件递归解析成命令集树;
命令匹配模块,用于在命令集树中对用户输入的命令进行匹配;
程序调用执行模块,用于调用程序执行匹配成功的命令。
所述配置文件包括两类命令元素:关键字节点和参数节点,关键字节点和参数节点的可选属性均包括:可执行属性;
一条命令中的最终节点须具有可执行属性,可执行属性的内容为可执行程序。
可选的,所述基于动态配置的网络设备CLI实现装置进一步包括:
命令转换模块,用于将匹配成功的命令转换成指向被调用程序的字符串;
程序调用执行模块进一步用于,当指向被调用程序的字符串调用可执行属性指向的可执行程序时,若所述匹配成功的命令中有可执行属性限定的参数节点,则将该参数节点的输入值作为参数输入给所述可执行程序。
所述参数节点的可选属性进一步包括:检查属性和列表属性,检查属性的内容是检查程序,列表属性的内容是列表数值;
程序调用执行模块进一步用于,当指向被调用程序的字符串调用检查属性指向的检查程序时,若所述匹配成功的命令中有检查属性限定的参数节点,则将该参数节点的输入值作为所述检查程序的执行对象;
在执行所述匹配成功的命令中的被调用程序时,若所述匹配成功的命令中有列表属性限定的参数节点,则判断该参数节点的输入值是否在列表属性所列的数值当中,若是,则将参数节点的输入值作为参数输入给被调用的程序,否则不执行被调用程序。
可选的,所述配置文件为带有初始化函数的动态库;
所述加载模块进一步用于,在CLI主程序启动时,向内存中加载所有的带有初始化函数的动态库;
所述将配置文件递归解析成命令集树的过程是:以命令集树指针为参数调用每个动态库中的初始化函数,初始化函数完成向命令集树中加载该动态库实现的命令节点。
可选的,所述程序调用执行模块进一步用于,在执行匹配成功的命令时,直接运行所述匹配成功的命令中可执行属性、检查属性或列表属性对应的函数指针,以完成对所述匹配成功的命令的操作。
采用上述技术方案,本发明具有下列优点:
本发明所述基于动态配置的网络设备CLI实现方法和装置,在CLI主程序启动时,向内存中加载配置文件,将配置文件递归解析成命令集树,在命令集树中对用户输入的命令进行匹配,执行匹配成功的命令。本发明采用的CLI配置文件可以明确表示出CLI命令中的命令格式、命令参数等属性,以及当用户输入些命令时需要调用的程序。CLI主程序启动后,通过对配置文件的解析生成命令集树,开发过程中开发人员只需要对CLI命令最终调用的程序进行调试即可、不需要对CLI程序的加载、解析、匹配等过程进行编译,大大节省了开发时间与开发工作量。当要对CLI的命令结构进行更改和新增命令行时,只需更改对应的配置文件即可,不需要编译,即改即生效。本发明克服了现有技术中zebra命令行方法开发与调试难度大且开发结果不能动态修改的缺陷。
附图说明
图1为本发明第一实施例所述基于动态配置的网络设备CLI实现方法流程图;
图2为本发明第二实施例所述基于动态配置的网络设备CLI实现方法流程图;
图3为本发明第三实施例所述基于动态配置的网络设备CLI实现方法流程图;
图4为本发明第四实施例命令集树结构示意图;
图5为本发明将配置文件递归解析成命令集树的流程示意图;
图6为本发明第四实施例中用户输入命令“system time show”在命令集树中匹配的命令节点示意图;
图7为本发明第四实施例中用户输入命令“network ping 192.168.0.1”在命令集树中匹配的命令节点示意图;
图8为本发明第五、六实施例所述基于动态配置的网络设备CLI实现装置组成示意图;
图9为本发明第七实施例所述基于动态配置的网络设备CLI实现装置组成示意图。
具体实施方式
为更进一步阐述本发明为达成预定目的所采取的技术手段及功效,以下结合附图及较佳实施例,对本发明提出的所述基于动态配置的网络设备CLI实现方法和装置,详细说明如后。
本发明第一实施例,如图1所示,一种基于动态配置的网络设备CLI实现方法,包括如下具体步骤:
步骤S101,在CLI主程序启动时,向内存中加载配置文件,配置文件包括两类命令元素:关键字节点和参数节点,关键字节点和参数节点的可选属性均包括:可执行属性。一条命令中的最终节点必须具有可执行属性,可执行属性的内容为可执行程序。
步骤S102,将配置文件递归解析成命令集树。
步骤S103,将用户输入的命令元素与命令集树上的命令节点进行一致性匹配,与命令集树上的参数节点任意匹配。
步骤S104,将匹配成功的命令转换成指向被调用程序的字符串;
步骤S105,当指向被调用程序的字符串调用可执行属性指向的可执行程序时,若所述匹配成功的命令中有可执行属性限定的参数节点,则将该参数节点的输入值作为参数输入给被调用的可执行程序。
本发明第二实施例,如图2所示,一种基于动态配置的网络设备CLI实现方法,包括如下具体步骤:
步骤S201,在CLI主程序启动时,向内存中加载配置文件,配置文件包括两类命令元素:关键字节点和参数节点,关键字节点的可选属性包括:可执行属性,可执行属性的内容为可执行程序。参数节点的可选属性包括:可执行属性、检查属性和列表属性,检查属性的内容是检查程序,列表属性的内容是列表数值。一条命令中的最终节点必须具有可执行属性。
步骤S202,将配置文件递归解析成命令集树。
步骤S203,将用户输入的命令元素与命令集树上的命令节点进行一致性匹配,与命令集树上的参数节点任意匹配。
步骤S204,将匹配成功的命令转换成指向被调用程序的字符串;
步骤S205,当指向被调用程序的字符串调用可执行属性指向的可执行程序时,若所述匹配成功的命令中有可执行属性限定的参数节点,则将该参数节点的输入值作为参数输入给被调用的可执行程序。
步骤S206,当指向被调用程序的字符串调用检查属性指向的检查程序时,若所述匹配成功的命令中有检查属性限定的参数节点,则将该参数节点的输入值作为被调用的检查程序的执行对象;
步骤S207,在执行所述匹配成功的命令中的被调用程序时,若所述匹配成功的命令中有列表属性限定的参数节点,则判断该参数节点的输入值是否在列表属性所列的数值当中,若是,则将参数节点的输入值作为参数输入给被调用的程序,否则不执行被调用程序。
需要说明的是,在配置文件中检查属性和列表属性可以分别位于可执行属性之后,配合可执行属性依附的参数节点来执行。
本发明第三实施例,如图3所示,一种基于动态配置的网络设备CLI实现方法,包括如下具体步骤:
步骤S301,在CLI主程序启动时,向内存中加载带有初始化module_init函数的动态库;
步骤S302,以命令集树指针为参数调用每个动态库中的初始化函数,初始化module_init函数完成向命令集树中加载该动态库实现的命令节点。
步骤S303,将用户输入的命令元素与命令集树上的命令节点进行一致性匹配,与命令集树上的参数节点任意匹配。
步骤S304,在执行匹配成功的命令时,直接运行所述匹配成功的命令中可执行属性、检查属性或列表属性对应的函数指针,以完成对所述匹配成功的命令的操作。
本发明第四实施例,以系统时间显示命令、系统时间设置命令和网络连接命令为例,详细描述一下,本发明第二实施例的具体实现过程。
1)首先,本发明提出的CLI命令节点配置格式如下:
{
  cmd=”value”
  token=”value”
  exec=”value”
  check=”value”
  list=”value”
  {//第一子命令节点
    ......
  }
  {//第二子命令节点
    ......
  }
  ......
}
配置格式中字段含义和使用规则如表1所示:
表1
Figure BSA00000244352300091
如以下配置文件定义了4条CLI命令,即CLI程序启动时,用户可以输入的CLI命令分别为:
system time show
system time set<time>
network ping<ip>
network ping<ip>timeout<timeout>
其中,<>中填入参数节点的内容。
2)用户在遵循配置格式中字段使用规则的情况下,为实现上述四种命令的功能,需要在配置文件中写入以下内容:
{
  cmd=”system”
  {
    cmd=”time”
      {
        cmd=”show”
        exec=”date”
      }
      {
        cmd=”set”
        {
          token=”time”
          exec=”set_time.sh”
        }
      }
  }
}
{
  cmd=”network”
  {
    cmd=”ping”
    {
      token=”ip”
      exec=”ping.sh”
      check=”isip.sh”
      {
         cmd=”timeout”
         {
           token=”timeout”
           exec=”ping.sh”
           list=”5 10 15 20”
         }
      }
    }
  }
}
3)CLI程序启动时,向内存中加载配置文件,以system time show这条命令的配置为例,CLI程序会对show节点进行判断,因为根据表1中的规则一条命令中的最终节点必须具有可执行属性,所以在配置文件中如果show节点没有定义exec属性,则表示用户的输入不完整,不是一个有效的命令,此时会给出提示,完成对此次输入的操作。如果有exec属性,如本例中的show节点定义了exec属性为date,则是一个有效的命令。
在配置文件中通过token来标记一个节点为参数节点。参数节点与关键字节点的区别在于:
1.参数节点与用户的输入进行严格匹配,如:system节点只有在用户输入命令第一个词为system时才匹配成功。参数节点是任意匹配,即无论用户输入的是什么词都会匹配成功。
2.在调用最终节点的exec属性时,参数节点会被作为调用的参数,输入给被调用程序。
3.参数节点可以具有check属性,当调用最终节点时,CLI程序会对参数节点对应的输入值调用check进行检查,如果check失败,则表示参数输入错误不能运行
4.参数节点可以具有list属性,CLI程序会判断参数节点对应的输入值是否在list中,如果不在,则表示输入错误。
下面通过表2列举一些错误输入的例子:
表2
Figure BSA00000244352300111
然后以上配置文件会被解析如图4所示的一个命令集树,由于命令元素show、time、ip和timeout都具有exec属性,所以这些节点被标记为可执行。
在实际操作中,一个命令节点以{}表示,命令节点的属性以name=’value’的方式表示,name表示属性名,value表示属性值。已定义的属性名如表1的后三行所示。一个不包括子命令节点的命令节点的配置文件示例如下:
{
  cmd=’test’
  exec=’test.exe’
}
又例如,一个命令节点可以包涵多个子命令节点,配置文件格式为:
{//父节点
  //父节点属性
    {//子命令节点1
     //子命令节点1属性
    }
    {//子命令节点2
     //子命令节点2属性
    }
}
如5图所示,具体的解析过程如下:
打开配置文件逐行分行读取配置文件,根据读取的内容进行如下处理:
若读取的内容为“{”,则表示配置文件中定义了一个新的命令节点,开始递归解析,每次递归解析的内容仍然是读取的“{”、“name=’value”、“}”进行相应的处理,把返回结果作为当前解析结果的子节点添加;
若读取的内容为name=’value’格式的字符串,则把当前解析结果中的属性name赋值为value;
若读取的内容为“}”,则表示当前节点解析完成,返回解析结果。
4)如用户输入命令“system time show”那么CLI程序会把用户的输入根据空格拆分为三个组成部分:“system”“time”“show”,CLI程序会根据拆分结果在命令树中寻找对应的命令节点。如图6所示,用户的输入最终会命中最左侧的show节点。
如用户输入:network ping 192.168.0.1,用户输入的内容首先被分割为:“network”、“ping”、“192.168.0.1”在命令集树中匹配为ip节点,如图7所示。
5)执行system time show命令时,CLI程序会调用exec程序指定的程序完成操作。此时在网络设备上用户的操作过程如下所示:
router>system time show
Tue Jun 1 08:35:49 CST 2010
执行network ping 192.168.0.1命令时,CLI程序对查询路径上的所有参数节点进行参数判断,如:ip节点为参数节点,首先判断是否有list属性,由于ip节点没有list属性,CLI程序再判断是否有check属性,发现ip节点的check属性指向isip.sh,此时CLI程序以参数节点对应的输入值192.168.0.1做为参数调用isip.sh,即调用:isip.sh 192.168.0.1,如果isip.sh返回0表示输入合法,如果返回1则表示输入的参数不正确。
如果输入的参数合法,CLI程序会调用ip节点的exec属性,并以ip=192.168.0.1作为调用参数,即运行“ping.sh ip=192.168.0.1”,由ping.sh程序完成对192.168.0.1这个IP地址的ping操作。
本发明第五实施例,如图8所示,一种基于动态配置的网络设备CLI实现装置,包括如下组成部分:
加载模块,用于在CLI主程序启动时,向内存中加载配置文件,配置文件包括两类命令元素:关键字节点和参数节点,关键字节点和参数节点的可选属性均包括:可执行属性,一条命令中的最终节点必须具有可执行属性,可执行属性的内容为可执行程序。
文件解析模块,用于将配置文件递归解析成命令集树;
命令匹配模块,用于在命令集树中对用户输入的命令进行匹配;
命令转换模块,用于将匹配成功的命令转换成指向被调用程序的字符串;
程序调用执行模块,用于当指向被调用程序的字符串调用可执行属性指向的可执行程序时,若所述匹配成功的命令中有可执行属性限定的参数节点,则将该参数节点的输入值作为参数输入给被调用的可执行程序。
本发明第六实施例,如图8所示,一种基于动态配置的网络设备CLI实现装置,包括如下组成部分:
加载模块,用于在CLI主程序启动时,向内存中加载配置文件,配置文件包括两类命令元素:关键字节点和参数节点,关键字节点的可选属性包括:可执行属性,可执行属性的内容为可执行程序。参数节点的可选属性包括:可执行属性、检查属性和列表属性,检查属性的内容是检查程序,列表属性的内容是列表数值,一条命令中的最终节点必须具有可执行属性;
文件解析模块,用于将配置文件递归解析成命令集树;
命令匹配模块,用于在命令集树中对用户输入的命令进行匹配;
命令转换模块,用于将匹配成功的命令转换成指向被调用程序的字符串;
程序调用执行模块,用于当指向被调用程序的字符串调用可执行属性指向的可执行程序时,若所述匹配成功的命令中有可执行属性限定的参数节点,则将该参数节点的输入值作为参数输入给被调用的可执行程序;
当指向被调用程序的字符串调用检查属性指向的检查程序时,若所述匹配成功的命令中有检查属性限定的参数节点,则将该参数节点的输入值作为被调用的检查程序的执行对象;
在执行所述匹配成功的命令中的被调用程序时,若所述匹配成功的命令中有列表属性限定的参数节点,则判断该参数节点的输入值是否在列表属性所列的数值当中,若是,则将参数节点的输入值作为参数输入给被调用的程序,否则不执行被调用程序。
本发明第七实施例,如图9所示,一种基于动态配置的网络设备CLI实现装置,包括如下组成部分:
加载模块,用于在CLI主程序启动时,向内存中加载带有初始化函数的动态库;
文件解析模块,用于将带有初始化函数的动态库递归解析成命令集树;
命令匹配模块,用于以命令集树指针为参数调用每个动态库中的初始化函数,初始化函数完成向命令集树中加载该动态库实现的命令节点;
程序调用执行模块,用于在执行匹配成功的命令时,直接运行所述匹配成功的命令中可执行属性、检查属性或列表属性对应的函数指针,以完成对所述匹配成功的命令的操作。
采用本发明技术方案的CLI实现过程为:CLI主程序启动,首先加载一些动态模块,如:用于实现权限管理的模块、一些内置的CLI命令模块,如退出命令exit之后,CLI程序开始解析CLI配置文件,并根据配置文件的描述生成CLI命令集树,此时CLI程序已经获知目前支持的所有CLI命令。CLI程序开始等待用户的输入。
当用户通过终端,如串口、telnet、ssh输入命令后,CLI程序对用户输入的命令在命令树中进行匹配,如果命令不存在则提示输入错误,等待新的输入;如果命令存在,CLI程序会把用户输入转换为特有格式,比如指向调用程序的字符串,并传递给此字符串对应的程序或函数执行。并把执行结果显示给用户。如果用户输入命令为退出操作,则CLI程序退出。
综上所述,基于动态配置的网络设备CLI实现方法重点在于提供给用户CLI配置语法格式和使用规则,当用户需要增加命令行或者修改命令行时,只需按照CLI配置语法格式和使用规则撰写配置文件,CLI主程序基于配置文件对CLI命令进行动态加载,开发人员只需要关心当用户输入CLI命令后,真实调用程序的实现,不用关心CLI程序的内部实现方法,开发过程也不需要对CLI程序进行编译。
采用以上技术方案,可大大提高CLI开发的工作效率。由于采用了配置文件,可以实现CLI程序在不同硬件平台,不同系统间无更改移植,网络设备厂商不需要维护多套代码,降低了开发风险,同时也可以容易实现公司内所有产品CLI格式统一。在配置文件中加入命令帮助等信息的语义,还可以实现命令的多国语言支持,快速实现产品国际化。
通过具体实施方式的说明,应当可对本发明为达成预定目的所采取的技术手段及功效得以更加深入且具体的了解,然而所附图示仅是提供参考与说明之用,并非用来对本发明加以限制。

Claims (13)

1.一种基于动态配置的网络设备CLI实现方法,其特征在于,包括:
在CLI主程序启动时,向内存中加载配置文件;
将所述配置文件递归解析成命令集树;
在所述命令集树中对用户输入的命令进行匹配,执行匹配成功的命令。
2.根据权利要求1所述基于动态配置的网络设备CLI实现方法,其特征在于,所述配置文件包括两类命令元素:关键字节点和参数节点,所述关键字节点和所述参数节点的可选属性均包括:可执行属性;
一条命令中的最终节点须具有所述可执行属性,可执行属性的内容为可执行程序。
3.根据权利要求1或2所述基于动态配置的网络设备CLI实现方法,其特征在于,所述在命令集树中对用户输入的命令进行匹配的过程包括:
将用户输入的命令元素与所述命令集树上的命令节点进行一致性匹配,与所述命令集树上的参数节点任意匹配。
4.根据权利要求1或2所述基于动态配置的网络设备CLI实现方法,其特征在于,所述执行匹配成功的命令的过程包括:
将匹配成功的命令转换成指向被调用程序的字符串;
当所述指向被调用程序的字符串调用可执行属性指向的可执行程序时,若所述匹配成功的命令中有可执行属性限定的参数节点,则将该参数节点的输入值作为参数输入给所述可执行程序。
5.根据权利要求4所述基于动态配置的网络设备CLI实现方法,其特征在于,所述参数节点的可选属性进一步包括:检查属性和列表属性,所述检查属性的内容是检查程序,所述列表属性的内容是列表数值;
所述执行匹配成功的命令的过程进一步包括:
当所述指向被调用程序的字符串调用检查属性指向的检查程序时,若所述匹配成功的命令中有检查属性限定的参数节点,则将所述参数节点的输入值作为所述检查程序的执行对象;
在执行所述匹配成功的命令中的被调用程序时,若所述匹配成功的命令中有列表属性限定的参数节点,则判断所述参数节点的输入值是否在列表属性所列的数值当中,若是,则将所述参数节点的输入值作为参数输入给被调用的程序,否则不执行被调用程序。
6.根据权利要求1所述基于动态配置的网络设备CLI实现方法,其特征在于,所述配置文件为带有初始化函数的动态库;
在CLI主程序启动时,所述加载配置文件的过程是:向内存中加载所有的所述带有初始化函数的动态库;
所述将配置文件递归解析成命令集树的过程是:以命令集树指针为参数调用每个动态库中的初始化函数,所述初始化函数完成向所述命令集树中加载该动态库实现的命令节点。
7.根据权利要求6所述基于动态配置的网络设备CLI实现方法,其特征在于,所述执行匹配成功的命令的过程包括:
在执行匹配成功的命令时,直接运行所述匹配成功的命令中可执行属性、检查属性或列表属性对应的函数指针,以完成对所述匹配成功的命令的操作。
8.一种基于动态配置的网络设备CLI实现装置,其特征在于,包括如下组成部分:
加载模块,用于在CLI主程序启动时,向内存中加载配置文件;
文件解析模块,用于将配置文件递归解析成命令集树;
命令匹配模块,用于在命令集树中对用户输入的命令进行匹配;
程序调用执行模块,用于调用程序执行匹配成功的命令。
9.根据权利要求8所述基于动态配置的网络设备CLI实现装置,其特征在于,所述配置文件包括两类命令元素:关键字节点和参数节点,关键字节点和参数节点的可选属性均包括:可执行属性;
一条命令中的最终节点须具有可执行属性,可执行属性的内容为可执行程序。
10.根据权利要求9所述基于动态配置的网络设备CLI实现装置,其特征在于,所述基于动态配置的网络设备CLI实现装置进一步包括:
命令转换模块,用于将匹配成功的命令转换成指向被调用程序的字符串;
程序调用执行模块进一步用于,当指向被调用程序的字符串调用可执行属性指向的可执行程序时,若所述匹配成功的命令中有可执行属性限定的参数节点,则将该参数节点的输入值作为参数输入给所述可执行程序。
11.根据权利要求9或10所述基于动态配置的网络设备CLI实现装置,其特征在于,所述参数节点的可选属性进一步包括:检查属性和列表属性,检查属性的内容是检查程序,列表属性的内容是列表数值;
所述程序调用执行模块进一步用于,当指向被调用程序的字符串调用检查属性指向的检查程序时,若所述匹配成功的命令中有检查属性限定的参数节点,则将该参数节点的输入值作为所述检查程序的执行对象;
在执行所述匹配成功的命令中的被调用程序时,若所述匹配成功的命令中有列表属性限定的参数节点,则判断该参数节点的输入值是否在列表属性所列的数值当中,若是,则将参数节点的输入值作为参数输入给被调用的程序,否则不执行被调用程序。
12.根据权利要求8所述基于动态配置的网络设备CLI实现装置,其特征在于,所述配置文件为带有初始化函数的动态库;
所述加载模块进一步用于,在CLI主程序启动时,向内存中加载所有的带有初始化函数的动态库;
所述将配置文件递归解析成命令集树的过程是:以命令集树指针为参数调用每个动态库中的初始化函数,初始化函数完成向命令集树中加载该动态库实现的命令节点。
13.根据权利要求12所述基于动态配置的网络设备CLI实现装置,其特征在于,所述程序调用执行模块进一步用于,在执行匹配成功的命令时,直接运行所述匹配成功的命令中可执行属性、检查属性或列表属性对应的函数指针,以完成对所述匹配成功的命令的操作。
CN 201010263333 2010-08-26 2010-08-26 一种基于动态配置的网络设备cli实现方法和装置 Active CN101924656B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201010263333 CN101924656B (zh) 2010-08-26 2010-08-26 一种基于动态配置的网络设备cli实现方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201010263333 CN101924656B (zh) 2010-08-26 2010-08-26 一种基于动态配置的网络设备cli实现方法和装置

Publications (2)

Publication Number Publication Date
CN101924656A true CN101924656A (zh) 2010-12-22
CN101924656B CN101924656B (zh) 2013-11-06

Family

ID=43339319

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201010263333 Active CN101924656B (zh) 2010-08-26 2010-08-26 一种基于动态配置的网络设备cli实现方法和装置

Country Status (1)

Country Link
CN (1) CN101924656B (zh)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102447585A (zh) * 2012-01-04 2012-05-09 迈普通信技术股份有限公司 将网络配置协议响应报文转换为命令行的方法及装置
CN103309806A (zh) * 2013-05-03 2013-09-18 上海证券交易所 一种快速开发测试的装置及方法
CN103488626A (zh) * 2013-09-03 2014-01-01 深圳Tcl新技术有限公司 一种对终端的与参数名称映射的字符串纠错的方法和装置
CN104767635A (zh) * 2015-01-12 2015-07-08 武汉烽火网络有限责任公司 一种基于命令行动态替换用于多设备共镜像的方法
CN105183507A (zh) * 2015-08-24 2015-12-23 汉柏科技有限公司 一种应用程序间版本的匹配方法及系统
CN106656639A (zh) * 2017-02-28 2017-05-10 郑州云海信息技术有限公司 一种与设备通信的方法及系统
CN107370729A (zh) * 2017-07-13 2017-11-21 深圳市风云实业有限公司 命令权限分配方法
CN107479890A (zh) * 2017-08-16 2017-12-15 北京中创腾锐技术有限公司 基于Zebra实现使用不同文字显示命令帮助信息的方法和系统
CN107783786A (zh) * 2016-08-26 2018-03-09 华为数字技术(成都)有限公司 一种创建设备资源的方法和装置
CN107818002A (zh) * 2016-09-12 2018-03-20 华为数字技术(成都)有限公司 一种命令行界面的管理方法及装置
CN108121569A (zh) * 2017-12-18 2018-06-05 杭州迪普科技股份有限公司 一种接口配置方法和装置
CN109086064A (zh) * 2018-08-01 2018-12-25 南京茂毓通软件科技有限公司 基于自定义标签语言的http协议要素通用抽取方法
CN109412856A (zh) * 2018-11-05 2019-03-01 深圳互联先锋科技有限公司 一种网络设备品牌无差异管理方法及系统
CN109450679A (zh) * 2018-11-01 2019-03-08 郑州云海信息技术有限公司 一种网络信息配置方法与装置
CN110166277A (zh) * 2019-04-09 2019-08-23 广州市高科通信技术股份有限公司 一种命令行命令树构建方法和命令行动态加载的方法
CN113703769A (zh) * 2021-07-16 2021-11-26 苏州浪潮智能科技有限公司 一种cli命令执行方法及相关装置
CN113922979A (zh) * 2021-08-23 2022-01-11 北京天融信网络安全技术有限公司 网络安全设备配置系统、配置方法、计算机设备
CN114095226A (zh) * 2021-11-15 2022-02-25 云知声(上海)智能科技有限公司 基于cli动态设置服务参数的方法及系统

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108121221B (zh) * 2016-11-26 2020-05-01 沈阳新松机器人自动化股份有限公司 一种机器人命令接口控制系统及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1490977A (zh) * 2002-10-17 2004-04-21 华为技术有限公司 通用路由平台命令行的解析方法
CN101110703A (zh) * 2007-06-28 2008-01-23 中兴通讯股份有限公司 可定制的命令行实现方法和系统
CN101271400A (zh) * 2008-04-30 2008-09-24 北京中星微电子有限公司 一种计算机命令行参数的处理方法和装置
WO2009033424A1 (fr) * 2007-09-12 2009-03-19 Huawei Technologies Co., Ltd. Procédé et système d'obtention d'information de commandes d'utilisateur et dispositif pour enregistrer les commandes d'utilisateur

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1490977A (zh) * 2002-10-17 2004-04-21 华为技术有限公司 通用路由平台命令行的解析方法
CN101110703A (zh) * 2007-06-28 2008-01-23 中兴通讯股份有限公司 可定制的命令行实现方法和系统
WO2009033424A1 (fr) * 2007-09-12 2009-03-19 Huawei Technologies Co., Ltd. Procédé et système d'obtention d'information de commandes d'utilisateur et dispositif pour enregistrer les commandes d'utilisateur
CN101271400A (zh) * 2008-04-30 2008-09-24 北京中星微电子有限公司 一种计算机命令行参数的处理方法和装置

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102447585B (zh) * 2012-01-04 2014-04-16 迈普通信技术股份有限公司 将网络配置协议响应报文转换为命令行的方法及装置
CN102447585A (zh) * 2012-01-04 2012-05-09 迈普通信技术股份有限公司 将网络配置协议响应报文转换为命令行的方法及装置
CN103309806A (zh) * 2013-05-03 2013-09-18 上海证券交易所 一种快速开发测试的装置及方法
CN103309806B (zh) * 2013-05-03 2016-06-01 上海证券交易所 一种快速开发测试的装置及方法
CN103488626A (zh) * 2013-09-03 2014-01-01 深圳Tcl新技术有限公司 一种对终端的与参数名称映射的字符串纠错的方法和装置
CN104767635B (zh) * 2015-01-12 2019-01-04 武汉烽火网络有限责任公司 一种基于命令行动态替换用于多设备共镜像的方法
CN104767635A (zh) * 2015-01-12 2015-07-08 武汉烽火网络有限责任公司 一种基于命令行动态替换用于多设备共镜像的方法
CN105183507A (zh) * 2015-08-24 2015-12-23 汉柏科技有限公司 一种应用程序间版本的匹配方法及系统
CN107783786B (zh) * 2016-08-26 2021-06-15 华为数字技术(成都)有限公司 一种创建设备资源的方法和装置
CN107783786A (zh) * 2016-08-26 2018-03-09 华为数字技术(成都)有限公司 一种创建设备资源的方法和装置
CN107818002A (zh) * 2016-09-12 2018-03-20 华为数字技术(成都)有限公司 一种命令行界面的管理方法及装置
CN107818002B (zh) * 2016-09-12 2021-08-13 华为数字技术(成都)有限公司 一种命令行界面的管理方法及装置
CN106656639B (zh) * 2017-02-28 2020-06-26 苏州浪潮智能科技有限公司 一种与设备通信的方法及系统
CN106656639A (zh) * 2017-02-28 2017-05-10 郑州云海信息技术有限公司 一种与设备通信的方法及系统
CN107370729A (zh) * 2017-07-13 2017-11-21 深圳市风云实业有限公司 命令权限分配方法
CN107479890B (zh) * 2017-08-16 2021-01-01 长沙星融元数据技术有限公司 基于Zebra实现使用不同文字显示命令帮助信息的方法和系统
CN107479890A (zh) * 2017-08-16 2017-12-15 北京中创腾锐技术有限公司 基于Zebra实现使用不同文字显示命令帮助信息的方法和系统
CN108121569B (zh) * 2017-12-18 2020-12-04 杭州迪普科技股份有限公司 一种接口配置方法和装置
CN108121569A (zh) * 2017-12-18 2018-06-05 杭州迪普科技股份有限公司 一种接口配置方法和装置
CN109086064A (zh) * 2018-08-01 2018-12-25 南京茂毓通软件科技有限公司 基于自定义标签语言的http协议要素通用抽取方法
CN109450679A (zh) * 2018-11-01 2019-03-08 郑州云海信息技术有限公司 一种网络信息配置方法与装置
CN109412856A (zh) * 2018-11-05 2019-03-01 深圳互联先锋科技有限公司 一种网络设备品牌无差异管理方法及系统
CN109412856B (zh) * 2018-11-05 2022-06-03 深圳互联先锋科技有限公司 一种网络设备品牌无差异管理方法及系统
CN110166277A (zh) * 2019-04-09 2019-08-23 广州市高科通信技术股份有限公司 一种命令行命令树构建方法和命令行动态加载的方法
CN113703769A (zh) * 2021-07-16 2021-11-26 苏州浪潮智能科技有限公司 一种cli命令执行方法及相关装置
CN113703769B (zh) * 2021-07-16 2023-07-14 苏州浪潮智能科技有限公司 一种cli命令执行方法及相关装置
CN113922979A (zh) * 2021-08-23 2022-01-11 北京天融信网络安全技术有限公司 网络安全设备配置系统、配置方法、计算机设备
CN113922979B (zh) * 2021-08-23 2023-07-04 北京天融信网络安全技术有限公司 网络安全设备配置系统、配置方法、计算机设备
CN114095226A (zh) * 2021-11-15 2022-02-25 云知声(上海)智能科技有限公司 基于cli动态设置服务参数的方法及系统

Also Published As

Publication number Publication date
CN101924656B (zh) 2013-11-06

Similar Documents

Publication Publication Date Title
CN101924656B (zh) 一种基于动态配置的网络设备cli实现方法和装置
EP3605324A1 (en) Application development method and tool, device, and storage medium thereof
TWI514130B (zh) 一用於啟用並行測試之電腦裝置、方法、電腦程式產品及設備
US8516508B1 (en) Automated application programming interface (API) generation
US20130332449A1 (en) Generating data processing code from a directed acyclic graph
US10209968B2 (en) Application compiling
CN102375778A (zh) 实现数字信号处理器自动测试的方法及系统
CN111209203B (zh) 一种基于源代码的模型验证方法
CN100351785C (zh) 嵌入式系统的调试方法
CN113706110B (zh) 一种fpga测试工具一体化测试管理平台
CN103186463B (zh) 确定软件的测试范围的方法和系统
CN111475390A (zh) 日志采集系统部署方法、装置、设备及存储介质
CN111026670A (zh) 测试用例的生成方法、测试用例的生成装置及存储介质
Wahler et al. CAST: Automating software tests for embedded systems
CN109669851A (zh) 基于Selenium自动化的性能测试脚本录制方法
CN111752841A (zh) 单测模拟方法、装置、设备与计算机可读存储介质
CN112231206A (zh) 应用程序测试的脚本编辑方法、计算机可读存储介质及测试平台
CN114201397A (zh) 一种接口测试建模方法、装置、电子设备和存储介质
CN109284222B (zh) 软件单元、数据处理系统中的项目测试方法、装置及设备
US20210263837A1 (en) Real time fault localization using combinatorial test design techniques and test case priority selection
US10606569B2 (en) Declarative configuration elements
CN115470152A (zh) 测试代码生成方法、测试代码生成装置以及存储介质
CN114064218A (zh) 用于机器学习组件中的镜像生成方法、系统、介质及应用
WO2015094300A1 (en) Analyze code that uses web framework using local parameter model
CN114528214A (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
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee

Owner name: BEIJING TOPSEC TECHNOLOGY CO., LTD.

Free format text: FORMER NAME: BEIJING HEAVEN MELTS LETTER SCIENCE TECHNOLOGIES CO., LTD.

CP01 Change in the name or title of a patent holder

Address after: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Patentee after: BEIJING TOPSEC TECHNOLOGY CO., LTD.

Address before: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Patentee before: Beijing heaven melts letter Science Technologies Co., Ltd.

C56 Change in the name or address of the patentee

Owner name: BEIJING HEAVEN MELTS LETTER SCIENCE TECHNOLOGIES C

Free format text: FORMER NAME: BEIJING TOPSEC TECHNOLOGY CO., LTD.

CP01 Change in the name or title of a patent holder

Address after: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Patentee after: Beijing heaven melts letter Science Technologies Co., Ltd.

Address before: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Patentee before: BEIJING TOPSEC TECHNOLOGY CO., LTD.

C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Patentee after: BEIJING TOPSEC TECHNOLOGY CO., LTD.

Address before: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Patentee before: Beijing heaven melts letter Science Technologies Co., Ltd.

C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Patentee after: Beijing heaven melts letter Science Technologies Co., Ltd.

Address before: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Patentee before: BEIJING TOPSEC TECHNOLOGY CO., LTD.