设备的调试方法及系统技术领域
本发明涉及视频监控领域,具体而言,涉及一种设备的调试方法及系统。
背景技术
目前,在视频监控领域内,通常所采用的设备调试的技术是通过串口调试方式对设
备进行调试,其可以通过搜索到的串口向被调试设备发送调试命令,以及通过串口接
收被调试设备反馈的调试信息。然而,此种调试方式的缺陷在于:在调试过程中所使
用的远程终端协议(TELENT)和安全外壳协议(SSH)易遭受恶意攻击,而且在调试过
程中通过网络交互的信息由于未经过加密处理,容易造成外泄。因此,相关技术中所
采用的设备调试方式的网络安全性较差。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种设备的调试方法及系统,以至少解决相关技术中所采用
的设备调试方式的网络安全性较差的技术问题。
根据本发明实施例的一个方面,提供了一种设备的调试方法,包括:
命令行界面服务器在远程调试客户端与调试命令执行服务器之间建立调试通道,
其中,调试命令执行服务器用于对待调试设备进行调试;命令行界面服务器接收来自
于远程调试客户端的调试命令;命令行界面服务器在调试命令通过安全认证后,将调
试命令发送至调试命令执行服务器;命令行界面服务器将从调试命令执行服务器获取
到的调试信息反馈至远程调试客户端。
进一步地,调试通道包括:第一调试链接和第二调试链接,命令行界面服务器在
远程调试客户端与调试命令执行服务器之间建立调试通道包括:命令行界面服务器在
接收到来自于远程调试客户端的调试链接请求;命令行界面服务器在调试链接请求的
触发下,使用虚拟终端与远程调试客户端建立第一调试链接以及使用预设协议套接字
的通信方式与调试命令执行服务器之间建立第二调试链接。
进一步地,远程调试客户端包括:命令行界面客户端与软件开发套件服务端,在
命令行界面服务器接收来自于远程调试客户端的调试命令之前,还包括:命令行界面
客户端接收用户输入的调试命令;软件开发套件服务端将调试命令发送至命令行界面
服务器。
进一步地,在命令行界面服务器将调试命令发送至调试命令执行服务器之前,还
包括:安全认证服务器接收来自于命令行界面服务器的调试命令;安全认证服务器验
证用户是否具备发送调试命令的权限;如果用户具备发送调试命令的权限,则安全认
证服务器验证调试命令是否属于调试命令白名单中的命令;如果调试命令属于调试命
令白名单中的命令,则安全认证服务器则确认通过对调试命令的安全认证。
进一步地,在命令行界面服务器将调试命令发送至调试命令执行服务器之后,还
包括:调试命令执行服务器对调试命令进行封装,并对调试命令中的命令参数进行合
法性及权限校验;如果校验通过,则调试命令执行服务器通过执行调试命令对待调试
设备进行调试。
进一步地,上述方法还包括:远程调试客户端按照预设顺序将调试命令和/或反馈
信息记录至日志文件,并对记录至日志文件的时间进行存储。
进一步地,调试命令和/或反馈信息在通信过程中采用预设加密方式进行加密。
根据本发明实施例的另一方面,还提供了一种设备的调试系统,包括:命令行界
面服务器;该命令行界面服务器包括:建立模块,用于在远程调试客户端与调试命令
执行服务器之间建立调试通道,其中,调试命令执行服务器用于对待调试设备进行调
试;第一接收模块,用于接收来自于远程调试客户端的调试命令;发送模块,用于在
调试命令通过安全认证后,将调试命令发送至调试命令执行服务器;反馈模块,用于
将从调试命令执行服务器获取到的调试信息反馈至远程调试客户端。
进一步地,调试通道包括:第一调试链接和第二调试链接,建立模块包括:接收
单元,用于在接收到来自于远程调试客户端的调试链接请求;建立单元,用于在调试
链接请求的触发下,使用虚拟终端与远程调试客户端建立第一调试链接以及使用预设
协议套接字的通信方式与调试命令执行服务器之间建立第二调试链接。
进一步地,上述系统还包括:远程调试客户端;该远程调试客户端包括:命令行
界面客户端与软件开发套件服务端;命令行界面客户端,用于接收用户输入的调试命
令;软件开发套件服务端,用于将调试命令发送至命令行界面服务器。
进一步地,上述系统还包括:安全认证服务器;该安全认证服务器包括:第二接
收模块,用于接收来自于命令行界面服务器的调试命令;第一验证模块,用于验证用
户是否具备发送调试命令的权限;第二验证模块,用于在用户具备发送调试命令的权
限时,验证调试命令是否属于调试命令白名单中的命令;确认模块,用于在调试命令
属于调试命令白名单中的命令时,确认通过对调试命令的安全认证。
进一步地,上述系统还包括:调试命令执行服务器;该调试命令执行服务器包括:
处理模块,用于对调试命令进行封装,并对调试命令中的命令参数进行合法性及权限
校验;执行模块,用于在校验通过时,则通过执行调试命令对待调试设备进行调试。
在本发明实施例中,采用命令行界面服务器来取代通过串口调试方式对本地设备
进行调试的方式,通过命令行界面服务器在远程调试客户端与调试命令执行服务器之
间建立调试通道,其中,调试命令执行服务器用于对待调试设备进行调试;命令行界
面服务器接收来自于远程调试客户端的调试命令;命令行界面服务器在调试命令通过
安全认证后,将调试命令发送至调试命令执行服务器;命令行界面服务器将从调试命
令执行服务器获取到的调试信息反馈至远程调试客户端,从而提高了设备调试的网络
安全性,进而解决了相关技术中所采用的设备调试方式的网络安全性较差的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发
明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图
中:
图1是根据本发明实施例的设备的调试方法的流程图;
图2是根据本发明优选实施例的SDK服务端与CLI服务器进行通信交互的示意图;
图3是根据本发明优选实施例的对调试命令和/或反馈信息进行日志记录的流程
图;
图4是根据本发明实施例的设备的调试系统的结构框图;
图5是根据本发明优选实施例的设备的调试系统的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的
附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例
仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领
域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于
本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第
二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这
样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在
这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的
任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方
法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚
地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例,提供了一种设备的调试方法的方法实施例,需要说明的是,
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,
并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺
序执行所示出或描述的步骤。
图1是根据本发明实施例的设备的调试方法的流程图,如图1所示,该方法包括
如下步骤:
步骤S102,命令行界面(Command Line Interface,简称为CLI)服务器在远程
调试客户端与调试命令执行服务器之间建立调试通道,其中,调试命令执行服务器用
于对待调试设备进行调试;
步骤S104,命令行界面服务器接收来自于远程调试客户端的调试命令;
步骤S106,命令行界面服务器在调试命令通过安全认证后,将调试命令发送至调
试命令执行服务器;
步骤S108,命令行界面服务器将从调试命令执行服务器获取到的调试信息反馈至
远程调试客户端。
通过上述步骤,采用命令行界面服务器来取代通过串口调试方式对本地设备进行
调试的方式,通过命令行界面服务器来转发调试命令和调试信息,以屏蔽在调试过程
中所使用的TELENT和SSH遭受恶意攻击,从而提高了设备调试的网络安全性,进而解
决了相关技术中所采用的设备调试方式的网络安全性较差的技术问题。
在优选实施过程中,上述调试命令和/或反馈信息在通信过程中可以采用预设加密
方式进行加密。
在优选实施例中,远程调试客户端在向命令行界面服务器发送调试指令的通信过
程中,需要对调试指令进行加密传输,以及在命令行界面服务器向调试命令执行服务
器发送调试指令的通信过程中也需要对调试指令进行加密传输,例如:使用高级加密
标准(Advanced Encryption Standard,简称为AES,是下一代的加密算法标准,其
优势在于:速度快,安全级别高,而且是对称的加密算法)对调试命令进行传输。同
理,在调试命令执行服务器向命令行界面服务器返回调试信息的通信过程中也需要对
调试信息进行加密传输,以及命令行界面服务器在向远程调试客户端反馈调试信息的
通信过程中,同样需要对调试指令进行加密传输,从而能够有效地确保调试指令和调
试信息的网络传输安全性。
可选地,上述调试通道可以包括:第一调试链接和第二调试链接,在步骤S102
中,命令行界面服务器在远程调试客户端与调试命令执行服务器之间建立调试通道可
以包括以下操作:
步骤S1,命令行界面服务器在接收到来自于远程调试客户端的调试链接请求;
步骤S2,命令行界面服务器在调试链接请求的触发下,使用虚拟终端与远程调试
客户端建立第一调试链接以及使用预设协议套接字的通信方式与调试命令执行服务器
之间建立第二调试链接。
在优选实施例中,如果负责调试的用户开启了outputOpen或errputOpen功能,
则CLI服务器可以将Hicore中的标准输入输出信息转发给CLI客户端。在CLI服务器
可以分别运行多用应用进程,其中一个主要的应用进程用于进行调试服务,而CLI服
务器的其余应用进程可以用于执行常规服务(例如:Hicore打印信息),以上其余应
用进程中传输的信息可以通过相关通信接口传输至上述用于进行调试服务的应用进程。
一方面、CLI服务器可以使用虚拟终端建立其与Hicore标准输出/出错的通信信
道。需要说明的是,Hicore的标准输出/出错仅支持重定向到一个CLI服务器,Hicore
中内置的调试命令(例如:dvrtools等命令)则不会受到CLI服务器个数的限制。此
外,CLI服务器还可以建立其与Hicore内置dvrtools命令的通信信道。另一方面,
CLI服务器通过预设协议套接字(socket)的通信方式(例如:将TCP socket加入pol
轮询),并在socket可读的情况下,采用unix socket方式与调试命令执行服务器建
立调试链接。
另外,还需要说明的是,可以在CLI服务器与调试命令执行服务器之间需要设定
缓冲区,以解决网络抖动的问题。如果缓冲区溢出,则丢弃后续输出的调试信息,直
到缓冲区空闲为止。
可选地,上述远程调试客户端包括:命令行界面客户端(即CLI客户端)与软件
开发套件(Software Development Kit,简称为SDK)服务端(即SDK服务端),在步
骤S104,命令行界面服务器接收来自于远程调试客户端的调试命令之前,还可以包括
以下步骤:
步骤S3,命令行界面客户端接收用户输入的调试命令;
步骤S4,软件开发套件服务端将调试命令发送至命令行界面服务器。
图2是根据本发明优选实施例的SDK服务端与CLI服务器进行通信交互的示意图。
如图2所示,SDK服务端需要向CLI服务器发送建立调试链路请求,并接收CLI服务
器反馈的建立调试链路响应。CLI客户端(图中未示出)是与远程用户直接接触并使
用的模块,负责接收用户输入的各种调试命令。在用户通过CLI客户端输入调试命令
后,由SDK服务端发送至CLI服务器,进而再由CLI服务器转发至调试命令执行服务
器(图中未示出)。此外,SDK服务端还可以接收CLI服务器返回的该CLI服务器从调
试命令执行服务器接收到的调试信息并进行格式化处理,最终通过CLI客户端呈现给
用户。
作为本发明的一个优选实施例,上述方法还可以包括以下操作:
步骤S5,远程调试客户端按照预设顺序将调试命令和/或反馈信息记录至日志文
件,并对记录至日志文件的时间进行存储。
即远程调试客户端可以将用户逐行输入的调试命令按照时间的先后顺序存储到文
本日志文件中,同时记录每行调试命令的输入时间。此外,远程调试客户端还可以将
CLI服务器反馈的逐行输出的调试信息按照时间的先后顺序存储到文本日志文件中,
同时记录每行调试信息的输出时间。
图3是根据本发明优选实施例的对调试命令和/或反馈信息进行日志记录的流程
图。如图3所示,该流程可以包括以下处理步骤:
步骤S302:远程调试客户端在发送用户通过CLI客户端输入的调试命令之前,需
要对本地的日志记录文件进行初始化;
步骤S304:无论是远程调试客户端准备发送用户通过CLI客户端输入的调试命令
还是远程调试客户端准备接收CLI服务器返回的调试信息,都需要与CLI服务器建立
调试链接;
步骤S306:远程调试客户端判断用户是否通过CLI客户端输入调试命令;如果是,
则继续执行步骤S308;如果否,则流程结束;
步骤S308:远程调试客户端将调试命令发送至CLI服务器;
步骤S310:远程调试客户端在日志记录文件中记录用户输入的调试命令以及输入
调试命令的时间;返回步骤S306;
步骤S312:远程调试客户端判断是否接收到CLI服务器返回的调试信息;如果是,
则继续执行步骤S314;如果否,则流程结束;
步骤S314:远程调试客户端接收CLI服务器返回的调试信息并对调试信息进行格
式化处理和输出;
步骤S316:远程调试客户端在日志记录文件中记录输出的调试信息以及输出调试
命令的时间;返回步骤S312。
可选地,在步骤S106,命令行界面服务器将调试命令发送至调试命令执行服务器
之前,还可以包括以下操作:
步骤S6,安全认证服务器接收来自于命令行界面服务器的调试命令;
步骤S7,安全认证服务器验证用户是否具备发送调试命令的权限;
步骤S8,如果用户具备发送调试命令的权限,则安全认证服务器验证调试命令是
否属于调试命令白名单中的命令;
步骤S9,如果调试命令属于调试命令白名单中的命令,则安全认证服务器则确认
通过对调试命令的安全认证。
在优选实施例中,CLI服务器可以接收SDK服务端发送的经过加密处理的调试命
令,然后将调试命令输入至安全认证服务器,由安全认证服务器来校验调试命令是否
合法,其中,可以包括但不限于以下认证过程:
(1)校验用户是否具备发送调试命令的权限,例如:在对用户进行登录校验时,
可以根据用户输入的账号和密码等信息确定该用户是普通用户还是具有特殊权限(例
如:管理员权限)的用户,如果根据用户输入的登录认证信息能够确定该用户具备调
试设备的权限,则允许该用户发送调试命令,否则,禁用调试功能。当然,还可以更
进一步提高安全认证系数,即通过设定多层次登录认证方式进一步地确认具有特殊权
限的用户是否采用最高安全认证方式进行登录,而只有在确定该用户是通过最高安全
认证方式登录的情况下,才允许该用户发送调试命令,否则,禁用调试功能。
此外,为防止因用户的误操作而进入远程调试,故而,远程调试功能需要用户手
动开启,并且,在对认证口令验证成功后才能够使用远程调试功能。
(2)在确定该用户是通过最高安全认证方式进行登录,允许该用户启用调试功能
输入调试命令的情况下,还需要校验用户每次输入的调试命令是否属于白名单内设定
的命令,如果不属于白名单中的命令,则即便该用户具备发送调试命令的权限,也不
允许执行该调试命令。
进一步地,在步骤S106,命令行界面服务器将调试命令发送至调试命令执行服务
器之后,还可以包括以下步骤:
步骤S10,调试命令执行服务器对调试命令进行封装,并对调试命令中的命令参
数进行合法性及权限校验;
步骤S11,如果校验通过,则调试命令执行服务器通过执行调试命令对待调试设
备进行调试。
在优选实施例中,调试命令执行服务器负责执行从CLI服务器接收到的调试命令。
调试命令执行服务器需要对调试命令进行封装,并对调试命令中的命令参数进行合法
性及权限校验,以避免直接使用busybox命令所造成的风险。该调试命令执行服务器
可以直接复用hicore中的cmd_server功能,并与CLI服务器之间采用unix socket
方式进行通信交互。
图4是根据本发明实施例的设备的调试系统的结构框图。如图4所示,该设备的
调试系统可以包括:命令行界面服务器1;该命令行界面服务器1可以包括:建立模
块10,用于在远程调试客户端与调试命令执行服务器之间建立调试通道,其中,调试
命令执行服务器用于对待调试设备进行调试;第一接收模块12,用于接收来自于远程
调试客户端的调试命令;发送模块14,用于在调试命令通过安全认证后,将调试命令
发送至调试命令执行服务器;反馈模块16,用于将从调试命令执行服务器获取到的调
试信息反馈至远程调试客户端。
进一步地,调试通道可以包括:第一调试链接和第二调试链接,建立模块10可以
包括:接收单元(图中未示出),用于在接收到来自于远程调试客户端的调试链接请求;
建立单元(图中未示出),用于在调试链接请求的触发下,使用虚拟终端与远程调试客
户端建立第一调试链接以及使用预设协议套接字的通信方式与调试命令执行服务器之
间建立第二调试链接。
进一步地,如图5所示,上述系统还可以包括:远程调试客户端2;该远程调试
客户端2可以包括:命令行界面客户端20与软件开发套件服务端22;命令行界面客
户端20,用于接收用户输入的调试命令;软件开发套件服务端22,用于将调试命令发
送至命令行界面服务器。
进一步地,如图5所示,上述系统还可以包括:安全认证服务器3;该安全认证
服务器3可以包括:第二接收模块30,用于接收来自于命令行界面服务器的调试命令;
第一验证模块32,用于验证用户是否具备发送调试命令的权限;第二验证模块34,用
于在用户具备发送调试命令的权限时,验证调试命令是否属于调试命令白名单中的命
令;确认模块36,用于在调试命令属于调试命令白名单中的命令时,确认通过对调试
命令的安全认证。
进一步地,如图5所示,上述系统还可以包括:调试命令执行服务器4;该调试
命令执行服务器4可以包括:处理模块40,用于对调试命令进行封装,并对调试命令
中的命令参数进行合法性及权限校验;执行模块42,用于在校验通过时,则通过执行
调试命令对待调试设备进行调试。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有
详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它
的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,
可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件
可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所
显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模
块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显
示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到
多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案
的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以
是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成
的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,
可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质
上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的
形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一
台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所
述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only
Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘
等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人
员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润
饰也应视为本发明的保护范围。