发明内容
为了克服现有技术的不足,本发明的目的之一在于提供基于命令行模式的资源访问方法,其能够解决现有技术中Linux系统中资源访问的操作复杂的问题。
本发明的目的之二在于提供一种电子设备,其能够解决现有技术中Linux系统中资源访问的操作复杂的问题。
本发明的目的之三在于提供一种计算机可读存储介质,其能够解决现有技术中Linux系统中资源访问的操作复杂的问题。
本发明的目的之四在于提供基于命令行模式的资源访问系统,其能够解决现有技术中Linux系统中资源访问的操作复杂的问题。
本发明的目的之一采用如下技术方案实现:
基于命令行模式的资源访问方法,包括以下步骤:
进入容器步骤:获取容器的目标地址并进入容器;
请求生成步骤:在容器内获取访问资源的请求命令;
资源访问步骤:根据所述访问资源的请求以及容器内所有资源文件的目录通过RPC的方式访问资源层,进而访问到对应的资源。
进一步地,所述容器的创建过程包括以下步骤:
S11:通过本地应用生成创建容器的请求;
S12:根据创建容器的请求生成容器的基本信息并创建对应的容器;
S13:将用户所要访问的资源层的所有资源文件的目录挂载到容器上。
进一步地,所述容器的基本信息包括容器的名称、容器的目标地址和容器的状态。
进一步地,进入容器的方式包括通过本地客户端的方式进入容器或者通过浏览器的方式进入容器。
进一步地,所述通过浏览器进入容器的方式进入容器时,获取容器的目标地址具体包括以下步骤:
S21:生成令牌并将令牌作为键值放置于缓存里;
S22:调用命令行组件并根据令牌取出用户客户端请求的ip和端口;
S23:根据用户客户端请求的ip和端口获取容器的目标地址;每个用户客户端均对应一个容器。
进一步地,还包括免密码进入步骤:
用户在创建容器后,将用户客户端的公钥上传到应用存储在应用数据库,以及将公钥挂载到用户创建的容器上,从而让用户进入容器时使用免密码的方式进入。
本发明的目的之二采用如下技术方案实现:
一种电子设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如前所述的方法的步骤。
本发明的目的之三采用如下技术方案实现:
一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如前所述的方法的步骤。
本发明的目的之四采用如下技术方案实现:
基于命令行模式的资源访问系统,包括:
进入容器模块,用于获取容器的目标地址并进入容器;
请求生成模块,用于在容器内获取输入访问资源的命令并根据访问资源的命令生成资源请求;
资源访问模块,用于根据所述资源请求以及容器内所有资源文件的目录通过RPC的方式访问资源层,进而访问到资源层的资源。
相比现有技术,本发明的有益效果在于:
本发明通过浏览器的方式和本地客户端的方式进入容器,然后再通过容器对资源层的所有资源进行访问操作,使得资源的访问操作简单直观。另外,通过为每个用户创建一个容器,形成负载均衡和安全隔离,实现了访问操作的安全性。
具体实施方式
下面,结合附图以及具体实施方式,对本发明做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。
实施例
本发明是根据运维人员的操作习惯,提供了一种基于简单的命令行的模式,使得熟悉Linux命令的用户可通过命令行的操作来代替界面化的操作,同时采用较简单的命令行,即起到了简单直观的效果,其对于一般的运维人员来说其操作也很简单。
另外,本发明首先涉及到以下概念:
密钥对:包括公钥和私钥,是用于对传输的数据加解密的;
RPC:是远程过程调用协议;
warden:为应用提供隔离的环境,也即是容器;
mount:是Linux的挂载命令;
fileproxy:用于实现了用户对资源和服务的操作转换为对文件系统操作的技术,比如用于生成容器内的目录。
本发明的设计思路包括以下两点:1)为用户创建对应的容器;2)通过容器内来访问资源层的资源。
在Linux系统中,容器可以提供轻量级的虚拟化,以便隔离进程和资源。本发明就是利用容器的特点来实现用户对资源的访问,为每个用户创建一个容器,从而形成安全隔离,实现了访问操作的安全性。
用户在对资源访问之间首先要创建一个容器,这样,用户在访问资源时就可以在该容器内对资源层的资源进行访问、删除、修改、更新等操作,也即是,用户在固定的目录下进行基础资源的操作,例如用cat命令查看明细信息。
对于创建容器,通过以下方法实现,如图1所示:
S1、通过本地应用发起创建容器的请求;
S2、根据创建容器的请求生成容器的基本信息并创建对应的容器。容器的基本信息包括容器的目标地址、名称、状态等等。比如,本地应用会调用commder生成容器的基本信息。每个容器均具有唯一的目标地址。
S3、将所要访问的资源层的所有资源文件的目录挂载到所述容器内。
另外,对于资源层的所有资源文件的目录是通过fileproxy将对资源层的请求命令反射生成的目录。
比如:通过对java代码的标注进行解析成目录。具体为:请求用户信息时,在java类的代码上用@Path=user/list生成一个user/list目录,此时list可以请求到用户的列表。另外,将上述目录挂载到容器内,采用mount命令实现。
如下为目录的结构示例。
另外,用户在进入容器访问资源之前,需要将本机的公钥上传到容器,这样就可以实现免密码登录。其中公钥指的是远程主机用于对数据加密的,对应地,私钥是在客户端对远程主机发送来的用公钥加密后的数据进行解密的。
具体地,用户在创建容器后,将用户客户端的公钥上传到本地应用上并存储数据库中,同时还将用户客户端的公钥挂载到所述容器上,而用户客户端的私钥被保留在用户客户端,这样就可以实现用户在进入容器时,使用免密码的方式进入容器。
本发明中采用非对称密钥的方式对数据进行加密来保证通讯安全。比如用户通过客户端与容器进行联机,容器在向客户端发送数据时使用公钥对数据进行加密,并发送给客户端;当客户端接收到数据时使用私钥对数据进行解密,由于私钥只存在于客户端,这样就保证了数据传输的安全。
当创建窗口容器后,用户就可以通过对应的容器内访问资源层的资源。
如图2所示,基于命令行模式的资源访问方法,其包括以下步骤:
S31、获取容器的目标地址并进入容器。
由于本发明提供了两种进入容器的方式:clientssh和webssh,其中clientssh为通过本地客户端的方式进入容器、webssh为通过浏览器的方式进入容器。因此,在获取容器的目标地址时,也会有两种不同的获取方式。
通过浏览器的方式进入容器时,首先需要生成一令牌并将令牌作为键值放置于一缓存里,然后在跳转到命令窗口组件,通过命令窗口组件根据令牌获得用户请求的IP和端口,从而根据用户请求的IP和端口得到容器的目标地址,进入到容器内。该令牌内存储有用户请求的IP和端口。这里采用了令牌的方式,是为了不对外暴露用户客户端的IP和端口,不让用户在浏览器的输入栏中看到IP和端口,保证了数据的安全性。
通过本地客户端的方式进入容器是直接获取所要进入容器的目标地址,从而进入到容器内。
S32、在容器内获取访问资源的请求命令;
S33、根据访问资源的请求命令以及容器内所有资源文件的目录通过RPC的方式访问资源层,进而访问到对应的资源。
另外,还可以在获取访问资源的请求命令时获取业务代码,然后通过RPC的方式调用对应的业务层,然后业务层也通过RPC的方式调用对应的资源层。其中,业务代码用于对资源层返回的数据进行处理,比如过滤、排序等操作。
用户在使用时,首先创建对应的容器,然后再通过浏览器的方式或本地客户端的方式进入容器后,并在容器内输入访问资源的请求命令,同时调用对应的业务代码;然后根据访问资源的请求命令、业务代码以及容器内所有资源文件的目录通过RPC的方式调用资源层,进而访问到对应的资源。
如下代码通过命令行模式访问基础资源的使用示例:
>cat/cloudos/virtualmachine/vm1/info查看云主机vm1的详细信息.
displayName=vm1
id=bc6875dd-23f9-4a77-b46e-382eb62deb07
ostype=ubuntu14.04
cpuNum=2
memory=2048M
.....
>cat/cloudos/virtualmachine/vm1/clouddisk/disk1/info查看云主机运行状态,1为运行,0为停止
displayName=disk1
id=3f7319aa-b89e-41a6-a9fa-5ee350c552e6
size=100G
datacenterid=870d6f4c-f531-47f5-85bc-fc6620b0fa51
status=backup
>echo“action=vm.deploy displaName=vm2temeplatename=ubuntu12.04-64bit”>post创建云主机vm2
>echo“action=vm.stop displayName=vm2”>post停止云主机vm2
>echo“action=vm.destroy displayName=vm2”>post删除云主机vm2
>cat post.help查看post帮助
echo“action=<><key1=value1><key2=value2>”>post
action[required],支持vm.deploy,vm.start,vm.stop,vm.destroy,vm.restart;
displayName[required],虚拟机显示名称;
templatename[optional],模板名称,用于vm.deploy;
example:
>echo“action=vm.deploy displaName=vm2temeplatename=ubuntul2.04-64bit”>post
本发明还提供了一种电子设备,其包括存储器、处理器以及存储在存储器上并可在处理上运行的计算机程序,所述处理器执行所述程序时实现如前所述的基于命令行模式的资源访问方法的步骤。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如前所述的基于命令行模式的资源访问方法的步骤。
如图3所示,基于命令行模式的资源访问系统,其包括:
进入容器模块,用于获取容器的目标地址并进入容器;
请求生成模块,用于在容器内输入对应的命令并根据命令生成资源请求;
资源访问模块,用于根据所述资源请求以及容器内所有基础资源文件的目录通过RPC的方式访问资源层,进而方位到资源层的资源。
本发明通过浏览器的方式或本地客户端的方式进入容器,然后再通过容器对资源层的所有资源进行访问操作,使得资源的访问操作简单直观。另外,通过为每个用户创建一个容器,形成负载均衡和安全隔离,实现了访问操作的安全性。在数据传输时,通过公私钥的方式作安全认证,保证了数据的安全性。
上述实施方式仅为本发明的优选实施方式,不能以此来限定本发明保护的范围,本领域的技术人员在本发明的基础上所做的任何非实质性的变化及替换均属于本发明所要求保护的范围。