阻塞cli命令构架下处理非阻塞cli命令的系统及方法

文档序号:10597140阅读:195来源:国知局
阻塞cli命令构架下处理非阻塞cli命令的系统及方法
【专利摘要】本发明公开了一种阻塞CLI命令构架下处理非阻塞CLI命令的系统及方法,涉及路由器的CLI命令执行领域。该系统包括CLI命令模块、CLI命令代理模块、多个信令模块,CLI命令模块用于实现读线程、写线程和定时器并发执行;CLI命令模块包括CLI命令服务器,CLI命令服务器用于VTY和CLI命令代理客户端;CLI命令代理模块包括CLI命令代理服务器,CLI命令代理服务器用于监听CLI命令代理客户端的连接请求,创建连接套接字、CLI命令代理子任务,CLI命令代理子任务与CLI命令代理客户端交互,共同参与处理非阻塞命令。本发明在阻塞CLI命令构架下能够处理非阻塞命令,能够有效提高工程中问题处理的效率,优化用户对设备的感知。
【专利说明】
阻塞CL I命令构架下处理非阻塞CL I命令的系统及方法
技术领域
[0001]本发明涉及路由器的CLI命令执行领域,具体是涉及一种阻塞CLI命令构架下处理非阻塞CLI命令的系统及方法。【背景技术】
[0002]CLI(Command Line Interface,命令行界面)命令应用于路由器、交换、TM (Terminat1n Multiplexer,终端复用器)、CM(Cable Modem,电缆调制解调器)等产品,例如烽火、CISCO、中兴、华为等厂家的设备,它是路由器产品的标准配置方式。某些路由器的 CLI命令是通过阻塞(Block)方式实现的。两个用户同时登录到路由器,一个用户执行完命令后,另外一个用户才能执行操作。对于一些需要多人同时使用到一些CLI命令工具,例如 ping、traceroute、telnet、ssh等命令功能,可能就存在了使用的局限性,导致阻塞CLI命令构架下多用户无法同时使用非组塞命令。
【发明内容】

[0003]本发明的目的是为了克服上述【背景技术】的不足,提供一种阻塞CLI命令构架下处理非阻塞CLI命令的系统及方法,在阻塞CLI命令构架下能够处理非阻塞命令,能够有效提高工程中问题处理的效率,优化用户对设备的感知。
[0004]本发明提供一种阻塞CLI命令构架下处理非阻塞CLI命令的系统,该系统包括CLI 命令模块、CLI命令代理模块、多个信令模块,其中:
[0005]所述CLI命令模块用于实现读线程、写线程和定时器并发执行;CLI命令模块包括 CLI命令服务器,CLI命令服务器用于创建虚拟终端VTY和CLI命令代理客户端;
[0006]所述CLI命令代理模块包括CLI命令代理服务器,CLI命令代理服务器用于监听CLI 命令代理客户端的连接请求,创建与CLI命令代理客户端之间的连接套接字、CLI命令代理子任务,CLI命令代理子任务与CLI命令代理客户端交互,共同参与处理非阻塞命令。
[0007]在上述技术方案的基础上,用户在终端向所述系统发起登录请求,CLI命令服务器监听请求,CLI命令服务器收到用户请求后,为该用户创建一个虚拟终端VTY,作为用户的一个虚拟登录的路由器。
[0008]在上述技术方案的基础上,所述用户在终端通过安全外壳协议ssh或者远程终端协议telnet客户端向所述系统发起登录请求。
[0009]在上述技术方案的基础上,所述CLI命令服务器监听ssh或者telnet的TCP连接请求。
[0010]在上述技术方案的基础上,所述CLI命令服务器创建一个CLI命令代理客户端,CLI 命令代理客户端向CLI命令代理服务器发起TCP连接请求,CLI命令代理服务器收到TCP连接请求后,创建与CLI命令代理客户端之间的TCP连接套接字,再创建一个CLI命令代理子任务,并将创建好的TCP连接套接字交给该CLI命令代理子任务处理。
[0011]在上述技术方案的基础上,所述CLI命令代理客户端接收到用户输入的CLI命令时,根据用户注册模式判断该CLI命令是阻塞命令,还是非阻塞命令;如果是阻塞命令,CLI命令代理客户端按照阻塞命令的流程,与信令模块交互完成阻塞命令的处理;如果是非阻塞命令,CLI命令代理客户端将该非阻塞命令发送给CLI命令代理子任务,并返回继续处理其他命令;CLI命令代理子任务接收该非阻塞命令后,判断是否需要信令模块协助完成处理,如果不需要,CLI命令代理子任务自己完成非阻塞命令的处理;如果需要信令模块参与完成该非阻塞命令,则向信令模块发起TCP连接请求,并将非阻塞命令解析成信令模块可识别的数据,然后发送给信令模块;信令模块接收数据并处理,将处理结果反馈给CLI命令代理子任务;CLI命令代理子任务收集信令模块处理的结果和自己处理的结果后,向CLI命令代理客户端返回CLI命令处理的结果;CLI命令代理客户端将结果反馈给用户的终端。
[0012]在上述技术方案的基础上,用户在终端设备输入退出命令或者用户登录超时,CLI命令服务器释放已创建的VTY资源,并关闭CLI命令代理客户端及其与CLI命令代理子任务的TCP连接套接字;CLI命令代理子任务感知到CLI命令代理客户端关闭后,释放已申请的资源和TCP连接套接字,CLI命令代理服务器销毁CLI命令代理子任务,并释放CLI命令代理子任务的线程资源。
[0013]本发明还提供一种基于上述系统的阻塞CLI命令构架下处理非阻塞CLI命令的方法,包括以下步骤:
[0014]S1、用户在终端向所述系统发起登录请求,CLI命令服务器监听请求,CLI命令服务器收到用户请求后,为该用户创建一个虚拟终端VTY,作为用户的一个虚拟登录的路由器;
[0015]S2、CLI命令服务器创建一个CLI命令代理客户端,CLI命令代理客户端向CLI命令代理服务器发起TCP连接请求,CLI命令代理服务器收到TCP连接请求后,创建与CLI命令代理客户端之间的TCP连接套接字,再创建一个CLI命令代理子任务,并将创建好的TCP连接套接字交给该CLI命令代理子任务处理;
[0016]S3、CLI命令代理客户端接收到用户输入的CLI命令时,根据用户注册模式判断该CLI命令是阻塞命令,还是非阻塞命令;如果是阻塞命令,CLI命令代理客户端按照阻塞命令的流程,与信令模块交互完成阻塞命令的处理;如果是非阻塞命令,CLI命令代理客户端将该非阻塞命令发送给CLI命令代理子任务,并返回继续处理其他命令;CLI命令代理子任务接收该非阻塞命令后,判断是否需要信令模块协助完成处理,如果不需要,CLI命令代理子任务自己完成非阻塞命令的处理;如果需要信令模块参与完成该非阻塞命令,则向信令模块发起TCP连接请求,并将非阻塞命令解析成信令模块可识别的数据,然后发送给信令模块;信令模块接收数据并处理,将处理结果反馈给CLI命令代理子任务;CLI命令代理子任务收集信令模块处理的结果和自己处理的结果后,向CLI命令代理客户端返回CLI命令处理的结果;CLI命令代理客户端将结果反馈给用户的终端。
[0017]在上述技术方案的基础上,步骤S3之后,还包括以下步骤:
[0018]用户在终端设备输入退出命令或者用户登录超时,CLI命令服务器释放已创建的VTY资源,并关闭CLI命令代理客户端及其与CLI命令代理子任务的TCP连接套接字;CLI命令代理子任务感知到CLI命令代理客户端关闭后,释放已申请的资源和TCP连接套接字,CLI命令代理服务器销毁CLI命令代理子任务,并释放CLI命令代理子任务的线程资源。
[0019]在上述技术方案的基础上,步骤SI中,用户在终端通过安全外壳协议ssh或者远程终端协议telnet客户端向所述系统发起登录请求,CLI命令服务器监听ssh或者telnet的TCP连接请求。
[0020]与现有技术相比,本发明的优点如下:[〇〇21]本发明中的CLI命令模块收到用户的CLI命令后,甄别阻塞的CLI命令和非阻塞的 CLI命令,如果该CLI命令是阻塞命令,则按照阻塞命令的流程,与信令模块交互完成阻塞命令的执行;如果该CLI命令是非阻塞命令,则将该非阻塞命令发给CLI命令代理子任务执行; CLI命令代理子任务处理完该非阻塞命令后,将结果返回给CLI命令模块,CLI命令模块呈显给用户。因此,本发明在阻塞CLI命令构架下能够处理非阻塞命令,让工程人员可以同时进行ping、telnet、traceroute等操作,能够有效提高工程中问题处理的效率,优化用户对设备的感知。【附图说明】[〇〇22]图1是本发明实施例中阻塞CLI命令构架下处理非阻塞CLI命令的系统的结构框图。[〇〇23]图2是本发明实施例中终端telnet或者ssh登录的时序图。[〇〇24]图3是本发明实施例中阻塞和非阻塞命令处理的时序图。[〇〇25]图4是本发明实施例中终端telnet或者ssh退出的时序图。【具体实施方式】
[0026]下面结合附图及具体实施例对本发明作进一步的详细描述。
[0027]为了解决阻塞CLI命令构架下多用户无法同时使用非组塞命令的问题,本发明实施例提供一种阻塞CLI命令构架下处理非阻塞CLI命令的系统,参见图1所示,该系统包括 CLI命令模块、CLI命令代理模块、多个信令模块,其中:
[0028]CLI命令模块用于实现读线程、写线程和定时器并发执行;CLI命令模块包括CLI命令服务器,CLI命令服务器用于创建VTY(Virtual Teletype Terminal,虚拟终端)和CLI命令代理客户端;[〇〇29] CLI命令代理模块包括CLI命令代理服务器,CLI命令代理服务器用于监听CLI命令代理客户端的连接请求,创建与CLI命令代理客户端之间的连接套接字、CLI命令代理子任务,CLI命令代理子任务与CLI命令代理客户端交互,共同参与处理非阻塞命令。
[0030]本发明实施例还提供一种基于上述系统的阻塞CLI命令构架下处理非阻塞CLI命令的方法,包括以下步骤:[0031 ] S1、用户在终端通过ssh(secure shell,安全外壳协议)或者telnet(远程终端协议)客户端向上述系统发起登录请求,参见图2所示,CLI命令服务器监听ssh或者telnet的 TCP连接请求,CLI命令服务器收到用户请求后,为该用户创建一个VTY(Virtual Teletype Terminal,虚拟终端),作为用户的一个虚拟登录的路由器;[〇〇32] S2、CLI命令服务器创建一个CLI命令代理客户端,CLI命令代理客户端向CLI命令代理服务器发起TCP连接请求,CLI命令代理服务器收到TCP连接请求后,创建与CLI命令代理客户端之间的TCP连接套接字,再创建一个CLI命令代理子任务,并将创建好的TCP连接套接字交给该CLI命令代理子任务处理;[〇〇33]S3、参见图3所示,CLI命令代理客户端接收到用户输入的CLI命令时,根据用户注册模式判断该CLI命令是阻塞命令,还是非阻塞命令,阻塞和非阻塞命令在注册时就能区分开来;如果是阻塞命令,CLI命令代理客户端按照阻塞命令的流程,与信令模块交互完成阻塞命令的处理;如果是非阻塞命令,例如口1叫、1:^061'011丨6、丨611161:、8811、?1?(?;[16Transfer Protocol,文件传输协议)等非阻塞命令,CLI命令代理客户端将该非阻塞命令发送给CLI命令代理子任务,并返回继续处理其他命令;CLI命令代理子任务接收该非阻塞命令后,判断是否需要信令模块协助完成处理,如果不需要,CLI命令代理子任务自己完成非阻塞命令的处理;如果需要信令模块参与完成该非阻塞命令,则向信令模块发起TCP连接请求,并将非阻塞命令解析成信令模块可识别的数据,然后发送给信令模块;信令模块接收数据并处理,将处理结果反馈给CLI命令代理子任务;CLI命令代理子任务收集信令模块处理的结果和自己处理的结果后,向CLI命令代理客户端返回CLI命令处理的结果;CLI命令代理客户端将结果反馈给用户的终端;
[0034]S4、参见图4所示,用户在终端设备输入退出命令或者用户登录超时,CLI命令服务器释放已创建的VTY资源,并关闭CLI命令代理客户端及其与CLI命令代理子任务的TCP连接套接字;CLI命令代理子任务感知到CLI命令代理客户端关闭后,释放已申请的资源和TCP连接套接字,CLI命令代理服务器销毁CLI命令代理子任务,并释放CLI命令代理子任务的线程资源。
[0035]本领域的技术人员可以对本发明实施例进行各种修改和变型,倘若这些修改和变型在本发明权利要求及其等同技术的范围之内,则这些修改和变型也在本发明的保护范围之内。
[0036]说明书中未详细描述的内容为本领域技术人员公知的现有技术。
【主权项】
1.一种阻塞CLI命令构架下处理非阻塞CLI命令的系统,其特征在于:该系统包括CLI命令模块、CLI命令代理模块、多个信令模块,其中: 所述CLI命令模块用于实现读线程、写线程和定时器并发执行;CLI命令模块包括CLI命令服务器,CLI命令服务器用于创建虚拟终端VTY和CLI命令代理客户端; 所述CLI命令代理模块包括CLI命令代理服务器,CLI命令代理服务器用于监听CLI命令代理客户端的连接请求,创建与CLI命令代理客户端之间的连接套接字、CLI命令代理子任务,CLI命令代理子任务与CLI命令代理客户端交互,共同参与处理非阻塞命令。2.如权利要求1所述的阻塞CLI命令构架下处理非阻塞CLI命令的系统,其特征在于:用户在终端向所述系统发起登录请求,CLI命令服务器监听请求,CLI命令服务器收到用户请求后,为该用户创建一个虚拟终端VTY,作为用户的一个虚拟登录的路由器。3.如权利要求2所述的阻塞CLI命令构架下处理非阻塞CLI命令的系统,其特征在于:所述用户在终端通过安全外壳协议ssh或者远程终端协议telnet客户端向所述系统发起登录请求。4.如权利要求3所述的阻塞CLI命令构架下处理非阻塞CLI命令的系统,其特征在于:所述CLI命令服务器监听ssh或者telnet的TCP连接请求。5.如权利要求4所述的阻塞CLI命令构架下处理非阻塞CLI命令的系统,其特征在于:所述CLI命令服务器创建一个CLI命令代理客户端,CLI命令代理客户端向CLI命令代理服务器发起TCP连接请求,CLI命令代理服务器收到TCP连接请求后,创建与CLI命令代理客户端之间的TCP连接套接字,再创建一个CLI命令代理子任务,并将创建好的TCP连接套接字交给该CLI命令代理子任务处理。6.如权利要求5所述的阻塞CLI命令构架下处理非阻塞CLI命令的系统,其特征在于:所述CLI命令代理客户端接收到用户输入的CLI命令时,根据用户注册模式判断该CLI命令是阻塞命令,还是非阻塞命令;如果是阻塞命令,CLI命令代理客户端按照阻塞命令的流程,与信令模块交互完成阻塞命令的处理;如果是非阻塞命令,CLI命令代理客户端将该非阻塞命令发送给CLI命令代理子任务,并返回继续处理其他命令;CLI命令代理子任务接收该非阻塞命令后,判断是否需要信令模块协助完成处理,如果不需要,CLI命令代理子任务自己完成非阻塞命令的处理;如果需要信令模块参与完成该非阻塞命令,则向信令模块发起TCP连接请求,并将非阻塞命令解析成信令模块可识别的数据,然后发送给信令模块;信令模块接收数据并处理,将处理结果反馈给CLI命令代理子任务;CLI命令代理子任务收集信令模块处理的结果和自己处理的结果后,向CLI命令代理客户端返回CLI命令处理的结果;CLI命令代理客户端将结果反馈给用户的终端。7.如权利要求6所述的阻塞CLI命令构架下处理非阻塞CLI命令的系统,其特征在于:用户在终端设备输入退出命令或者用户登录超时,CLI命令服务器释放已创建的VTY资源,并关闭CLI命令代理客户端及其与CLI命令代理子任务的TCP连接套接字;CLI命令代理子任务感知到CLI命令代理客户端关闭后,释放已申请的资源和TCP连接套接字,CLI命令代理服务器销毁CLI命令代理子任务,并释放CLI命令代理子任务的线程资源。8.—种基于权利要求1所述系统的阻塞CLI命令构架下处理非阻塞CLI命令的方法,其特征在于,包括以下步骤: S1、用户在终端向所述系统发起登录请求,CLI命令服务器监听请求,CLI命令服务器收到用户请求后,为该用户创建一个虚拟终端VTY,作为用户的一个虚拟登录的路由器;52、CLI命令服务器创建一个CLI命令代理客户端,CLI命令代理客户端向CLI命令代理 服务器发起TCP连接请求,CLI命令代理服务器收到TCP连接请求后,创建与CLI命令代理客 户端之间的TCP连接套接字,再创建一个CLI命令代理子任务,并将创建好的TCP连接套接字 交给该CLI命令代理子任务处理;53、CLI命令代理客户端接收到用户输入的CLI命令时,根据用户注册模式判断该CLI命 令是阻塞命令,还是非阻塞命令;如果是阻塞命令,CLI命令代理客户端按照阻塞命令的流 程,与信令模块交互完成阻塞命令的处理;如果是非阻塞命令,CLI命令代理客户端将该非 阻塞命令发送给CLI命令代理子任务,并返回继续处理其他命令;CLI命令代理子任务接收 该非阻塞命令后,判断是否需要信令模块协助完成处理,如果不需要,CLI命令代理子任务 自己完成非阻塞命令的处理;如果需要信令模块参与完成该非阻塞命令,则向信令模块发 起TCP连接请求,并将非阻塞命令解析成信令模块可识别的数据,然后发送给信令模块;信 令模块接收数据并处理,将处理结果反馈给CLI命令代理子任务;CLI命令代理子任务收集 信令模块处理的结果和自己处理的结果后,向CLI命令代理客户端返回CLI命令处理的结 果;CLI命令代理客户端将结果反馈给用户的终端。9.如权利要求8所述的阻塞CLI命令构架下处理非阻塞CLI命令的系统,其特征在于:步 骤S3之后,还包括以下步骤:用户在终端设备输入退出命令或者用户登录超时,CLI命令服务器释放已创建的VTY资 源,并关闭CLI命令代理客户端及其与CLI命令代理子任务的TCP连接套接字;CLI命令代理 子任务感知到CLI命令代理客户端关闭后,释放已申请的资源和TCP连接套接字,CLI命令代 理服务器销毁CLI命令代理子任务,并释放CLI命令代理子任务的线程资源。10.如权利要求8所述的阻塞CLI命令构架下处理非阻塞CLI命令的系统,其特征在于: 步骤S1中,用户在终端通过安全外壳协议ssh或者远程终端协议telnet客户端向所述系统 发起登录请求,CLI命令服务器监听ssh或者telnet的TCP连接请求。
【文档编号】H04L29/06GK105959256SQ201610235234
【公开日】2016年9月21日
【申请日】2016年4月15日
【发明人】董贤伟
【申请人】烽火通信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1