发明内容
为解决上述技术问题,本申请实施例提供一种命令管理方法、装置及***,对用于管理新加入或者移除的模块的命令进行动态的管理和维护,并对不同用户赋予不同权限来执行不同的命令来实现安全管理。
技术方案如下:
一种命令管理方法,包括:
获取用户注册的命令并对所述命令进行跟踪;
依据跟踪到的所述命令的实例变化对所述命令执行相应操作;所述相应操作包括:命令的注册、命令的更新和命令的移除。
上述的方法,优选的,所述命令的实例变化过程为:
用户依据确定的用户权限对命令进行获取,所述获取的命令包括:已经注册过的命令或命令组、命令组下的命令和所有命令组下名称为特定值的命令列表;
对获取的命令执行注册、注销或修改操作。
上述的方法,优选的,所述用户权限的确定过程为:
获取命令实例化对象中的用户信息;
解析所述用户信息中用户执行的命令或命令组;
将解析得到的命令或命令组与所述用户信息进行匹配,若匹配成功,则用户具有执行命令的权限,否则,不具有执行命令的权限。
一种命令管理装置,包括:命令注册器和命令***;
所述命令注册器包括:命令注册单元、命令更新单元和命令移除单元;
所述命令注册器用于获取用户注册的命令;
所述命令***用于对所述命令注册器注册的命令进行跟踪,并将跟踪到的所述命令的实例变化返回至所述命令注册器;
所述命令注册器依据所述命令***返回的命令的实例变化,对所述命令执行相应操作,所述相应操作包括:命令的注册、命令的更新和命令的移除;
所述命令注册单元用于命令的注册;
所述命令更新单元用于命令的更新;
所述命令移除单元用于命令的移除。
上述的装置,优选的,还包括用户权限管理单元;
所述用户权限管理单元用于对用户执行命令的权限进行确定。
上述的装置,优选的,所述用户权限管理单元对用户执行命令权限的确定过程为:
获取命令实例化对象中的用户信息;
解析所述用户信息中用户执行的命令或命令组;
将解析得到的命令或命令组与所述用户信息进行匹配,若匹配成功,则用户具有执行命令的权限,否则,不具有执行命令的权限。
一种命令管理***,包括:客户端、服务端及一种命令管理装置。
由以上本申请实施例提供的技术方案可见,本发明提供的一种命令管理方法、装置及***,对于用户依据权限注册的命令进行实时跟踪,若用于依据权限对已经注册的命令进行修改或移除,通过跟踪用户对命令进行的操作后命令的实例变化,对已经注册的命令进行更新或移除,本申请实施例提供的命令管理方法、装置及***,有效的实现了对命令的可扩展性,并能够有效的对命令进行管理,同时通过赋予用户权限,使得不同用户拥有不同权限来执行不同的命令,实现了命令的安全管理。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案。下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本申请实施例提供的命令管理方法的流程图如图1所示,包括:
步骤S101:获取用户注册的命令并对所述命令进行跟踪;
步骤S102:依据跟踪到的所述命令的实例变化对所述命令执行相应操作;所述相应操作包括:命令的注册、命令的更新和命令的移除。
在执行上述方法前,首先建立实现命令管理所涉及的类和接口:
实现命令的接口:Command接口,通过通过getName方法可以获得命令名称;getGroup方法取得命令所属的组;getUsage方法获得命令的惯用法,是命令后面跟着的参数或选项的顺序和个数;getShortDescription方法得到对命令的简短功能和使用描述;最后excute方法用来执行,完成特定的功能,这是个核心的方法,它有两个参数,第一个参数是字符串数组,存储的是一系列的选项和参数,而第二个参数是OSGi框架传进来的必要属性,这些属性包括如执行命令的用户,命令所在的组和当前***目录等信息,返回类型是字符串,该字符串最终显示在控制台或其他管理界面上。
实现命令***:用于跟踪命令的响应操作,例如当一个命令注册到OSGi框架中,该操作事件被监测到,并经过相应的过程将该命令注册到命令注册器实例中,并保存。当用户更新命令时,命令***监测到该操作,将命令注册器中存储的命令进行更新。当用户注销命令时,命令***监测到该操作,将命令注册器中存储的命令进行移除。
命令的实例变化过程为:
用户依据确定的用户权限对命令进行获取,所述获取的命令包括:已经注册过的命令或命令组、命令组下的命令和所有命令组下名称为特定值的命令列表;
对获取的命令执行注册、注销或修改操作。
根据命令***跟踪到的命令实例变化来执行相应的操作:例如,如果有命令注册,就将该命令存储起来,反之,如果注销,则移除该命令;同时本申请实施例提供多种获取注册命令的方式。
对命令执行操作中的相关信息进行初始化,如命令的组的列表和命令***的实例化,命令的存储Map等等。用户可以获得已经注册过的命令,获得所有已经注册过的命令组,或是根据某个组,获得该组下所有的命令或其中的某一个命令,同时也可以获得所有组下名称为某个值的命令列表。
在接口建立结束后:对接口实例化,激活***,跟踪命令的相应事件;
将命令注册到OSGi框架中;
一旦命令注册到框架中,会马上被监测到,进行命令的动态管理:
获取已经注册的所有命令,将所有命令的服务引用进行保存。
命令***获取服务引用,如果事件操作是命令注册,判断该服务引用是否已经被添加,如没有,判断该服务引用是否在被添加的过程中,如果不在,对该服务引用进行添加,并获取该服务引用对应的真实对象,调用命令注册器的添加方法,将命令进行保存或添加到命令所在的组列表中。
如果事件操作是修改命令,调用命令注册器的更新方法,查看该方法中服务引用是否已经被添加过,如果没有,返回,如果有,对服务引用对应的服务对象进行更新。
如果事件操作时注销命令,调用命令注册器的注销方法,从已添加过的注册命令中将该服务引用对应的服务对象进行删除。
由以上过程可知,命令的生命周期得到很好的控制,用户无论何时添加、修改和移除命令,命令管理框架对应做相应操作,有效的管理命令。用户不需要担心添加了命令无法执行,或删除了命令,命令依然可以执行等多种情况。
本申请实施例提供的用户权限确定过程的流程图如图2所示,包括:
步骤S201:获取命令实例化对象中的用户信息;
步骤S202:解析所述用户信息中用户执行的命令或命令组;
步骤S203:将解析得到的命令或命令组与所述用户信息进行匹配,若匹配成功,则用户具有执行命令的权限,否则,不具有执行命令的权限。
命令执行前,获取命令的实例化对象,从该实例化对象中获取保存的用户相关信息;
解析上述相关信息,如“*”代表用户可以执行所有命令,root/help表示用户可以执行命令组root下面的help命令,root/*则表示用户可以执行命令组root下面的所有命令等。
看传进来的命令组和命令是否匹配解析过的信息,如果匹配,表明该用户有执行该命令的权利,否则拒绝访问。
通过以上方法,实现对用户的授权操作,以及对用户执行某个命令权利的判决,保证不同级别的用户执行不同的命令,实现了对命令的安全管理。
本申请实施例提供的命令管理装置的结构图如图3所示,包括:命令注册器301和命令***302;
命令注册器301包括:命令注册单元303、命令更新单元304和命令移除单元305;
命令注册器301用于获取用户注册的命令;
命令***302用于对命令注册器301注册的命令进行跟踪,并将跟踪到的所述命令的实例变化返回至命令注册器301;
所述命令注册器301依据命令***302返回的命令的实例变化,对所述命令执行相应操作,所述相应操作包括:命令的注册、命令的更新和命令的移除;
命令注册单元303用于命令的注册;
命令更新单元304用于命令的更新;
命令移除单元305用于命令的移除。
本申请实施例提供的命令管理装置的又一结构示意图如图4所示,还包括用户权限管理单元306;
用户权限管理单元306用于对用户执行命令的权限进行确定。
用户权限管理单元306对用户执行命令权限的确定过程为:
获取命令实例化对象中的用户信息;
解析所述用户信息中用户执行的命令或命令组;
将解析得到的命令或命令组与所述用户信息进行匹配,若匹配成功,则用户具有执行命令的权限,否则,不具有执行命令的权限。
本申请实施例提供的命令管理***的结构示意图,包括:客户端401、服务端403及一种命令管理装置402;
客户端401用于为用户提供可操作平台;
命令管理装置402用于对命令进行管理;
服务端403用于对命令管理装置402对命令进行管理过程的具体化实施。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。