CN111680288A - 容器的命令执行方法、装置、设备及存储介质 - Google Patents
容器的命令执行方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111680288A CN111680288A CN202010527639.0A CN202010527639A CN111680288A CN 111680288 A CN111680288 A CN 111680288A CN 202010527639 A CN202010527639 A CN 202010527639A CN 111680288 A CN111680288 A CN 111680288A
- Authority
- CN
- China
- Prior art keywords
- container
- command
- target
- executed
- instruction
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种容器的命令执行方法、装置、设备及存储介质,通过在检测到目标容器对应的待执行容器命令时,拦截所述待执行容器命令;基于第一数据传输协议将所述待执行容器命令转换为所述目标容器可识别的目标容器指令;将所述目标容器指令发送至所述目标容器,以便所述目标容器执行所述待执行容器命令对应的操作。本发明根据协议转换将待执行容器转换为目标容器可识别的目标容器指令,并将指令发送至目标容器。无需登录容器,无需占用容器资源,由此避免了执行命令抢占业务容器资源而导致业务处理失败,提高了业务处理效率,解决了现有容器的命令执行方法需要登录容器而容易造成Pod中的资源失衡的技术问题。
Description
技术领域
本发明涉及金融科技(Fintech)技术领域,尤其涉及容器的命令执行方法、装置、设备及计算机可读存储介质。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Finteh)转变,技术也不例外,但由于金融行业的安全性、实时性要求,也对容器的命令执行技术提出的更高的要求。其中Kubernetes是一个开源平台,简称K8S,用于管理云平台中多个主机上的容器化的应用。目前很多互联网企业或金融机构已经在生产环境基于Kubernetes构建了容器云平台。kubernetes提供了命令行工具kubectl及其子命令exec,用于登录容器并在容器内交互式执行命令。Pod是可以创建和管理Kubernetes计算的最小可部署单元,由一个或者多个容器组成。Pod中的容器有共同的运行环境、共享内存以及CPU等资源。因此,目前容器的命令执行方法需要直接登录容器并在容器的真实环境下进行操作,容易造成Pod中的资源失衡,如占用Pod中的全部内存资源或CPU资源,从而影响业务容器,导致业务处理失败。
发明内容
本发明的主要目的在于提出一种容器的命令执行方法、装置、设备及计算机可读存储介质,旨在解决现有容器的命令执行方法需要登录容器而容易造成Pod中的资源失衡的技术问题。
为实现上述目的,本发明提供一种容器的命令执行方法,其特征在于,所述容器的命令执行方法包括如下步骤:
在检测到目标容器对应的待执行容器命令时,拦截所述待执行容器命令;
基于第一数据传输协议将所述待执行容器命令转换为所述目标容器可识别的目标容器指令;
将所述目标容器指令发送至所述目标容器,以便所述目标容器执行所述待执行容器命令对应的操作。
可选地,所述在检测到目标容器对应的待执行容器命令时,拦截所述待执行容器命令的步骤之后,还包括:
基于预存自定义简写命令、所述待执行容器命令在所述目标容器中的目标环境变量和目标工作目录,在所述目标容器外生成所述待执行容器命令对应的模拟上下文环境,以基于所述模拟上下文环境接收并识别用户输入指令或显示容器命令的执行结果。
可选地,所述将所述目标容器指令发送至所述目标容器,以便所述目标容器执行所述待执行容器命令对应的操作的步骤之后,还包括:
在接收到所述目标容器基于所述待执行容器命令反馈的结果指令时,基于第二数据传输协议,将所述结果指令转换为所述模拟上下文环境可识别的目标终端指令;
通过所述模拟上下文环境显示所述目标终端指令,以便用户了解所述目标容器执行所述待执行容器命令对应的操作结果。
可选地,所述基于预存自定义简写命令、所述待执行容器命令在所述目标容器中的目标环境变量和目标工作目录,在所述目标容器外生成所述待执行容器命令对应的模拟上下文环境的步骤具体包括:
基于所述自定义简写命令将所述待执行容器命令转换为容器可识别命令,并基于所述可识别命令确定所述代执行命令对应操作的目标工作目录;
判断所述目标容器中是否存在所述目标工作目录;
若所述目标容器中存在所述目标工作目录,则获取所述目标工作目录对应的目标文件;
基于所述目标环境变量以及所述目标文件,在所述目标容器外生成包含所述目标文件的模拟上下文环境。
可选地,所述在检测到目标容器对应的待执行容器命令时,拦截所述待执行容器命令的步骤之后,还包括:
将所述待执行容器命令进行解析,并根据命令关键字判断解析后的待执行容器命令是否为命令集,其中,所述命令集为包括两个及以上的多个子命令集合;
若所述解析后的待执行容器命令不是命令集,则对所述待执行容器命令进行合法性校验;
在所述待执行容器命令通过所述合法性校验时,执行步骤:基于第一数据传输协议将所述待执行容器命令转换为所述目标容器可识别的目标容器指令。
可选地,所述若所述解析后的待执行容器命令不是命令集,则对所述待执行容器命令进行合法性校验的步骤之后,还包括:
在所述待执行容器命令未通过所述合法性校验时,生成并显示当前命令不合法的提醒消息,以便提醒用户所述待执行容器命令为不合法容器命令。
可选地,所述容器的命令执行方法还包括:
在接收到设置指令时,获取所述设置指令中的目标执行指令,并将通过执行指令语法校验的目标执行指令添加至预设指令白名单,以将所述目标执行指令设为合法指令。
此外,为实现上述目的,本发明还提供一种容器的命令执行装置,所述容器的命令执行装置包括:
容器命令拦截模块,用于在检测到目标容器对应的待执行容器命令时,拦截所述待执行容器命令;
输入命令转换模块,用于基于第一数据传输协议将所述待执行容器命令转换为所述目标容器可识别的目标容器指令;
容器命令执行模块,用于将所述目标容器指令发送至所述目标容器,以便所述目标容器执行所述待执行容器命令对应的操作。
可选地,所述容器的命令执行装置还包括:
容器环境模拟模块,用于基于所述待执行容器命令在所述目标容器中的目标环境变量和目标工作目录,在所述目标容器外生成所述待执行容器命令对应的模拟上下文环境,以基于所述模拟上下文环境接收用户输入指令或显示容器命令的执行结果。
此外,为实现上述目的,本发明还提供一种容器的命令执行设备,所述容器的命令执行设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的容器的命令执行程序,所述容器的命令执行程序被所述处理器执行时实现如上所述的容器的命令执行方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有容器的命令执行程序,所述容器的命令执行程序被处理器执行时实现如上所述的容器的命令执行方法的步骤。
本发明提供一种容器的命令执行方法,通过在检测到目标容器对应的待执行容器命令时,拦截所述待执行容器命令;基于第一数据传输协议将所述待执行容器命令转换为所述目标容器可识别的目标容器指令;将所述目标容器指令发送至所述目标容器,以便所述目标容器执行所述待执行容器命令对应的操作。通过上述方式,本发明将发送至容器的待执行容器命令进行拦截,并根据协议转换将待执行容器转换为目标容器可识别的目标容器指令,然后将可识别的目标容器指令发送至目标容器,使目标容器执行对应操作。无需登录容器,无需占用容器资源,由此避免了执行命令抢占业务容器资源而导致业务处理失败,提高了业务处理效率,解决了现有容器的命令执行方法需要登录容器而容易造成Pod中的资源失衡的技术问题。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图;
图2为本发明容器的命令执行方法第一实施例的流程示意图;
图3为本发明容器的处理流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。
本发明实施例容器的命令执行设备可以是PC机或服务器设备,其上运行有Java虚拟机。
如图1所示,该容器的命令执行设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及容器的命令执行程序。
在图1所示的设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的容器的命令执行程序,并执行下述容器的命令执行方法中的操作。
基于上述硬件结构,提出本发明容器的命令执行方法实施例。
参照图2,图2为本发明容器的命令执行方法第一实施例的流程示意图,所述容器的命令执行方法包括:
步骤S10,在检测到目标容器对应的待执行容器命令时,拦截所述待执行容器命令;
Pod中的容器有共同的运行环境、共享内存以及CPU等资源。Pod中资源是有限的,比如Pod分配的CPU是2核,内存为4G,执行容器命令时,需要通过/bin/bash登陆到容器中进行操作,拥有了实际容器的真实环境,可以执行任意命令。但是,执行的命令容易对Pod的资源造成挤压,当达到容器的限制之后,很容易被K8s强杀,进而影响到业务容器。例如,打开一个很大的文件,容易造成内存消耗殆尽,或者执行一个很耗CPU的操作,造成CPU飙高。因此,目前容器的命令执行方法需要直接登录容器并在容器的真实环境下进行操作,容易造成Pod中的资源失衡,如占用Pod中的全部内存资源或CPU资源,从而影响业务容器,导致业务处理失败。为了解决上述问题,本实施例将发送至容器的待执行容器命令进行拦截,并根据协议转换将待执行容器转换为目标容器可识别的目标容器指令,然后将可识别的目标容器指令发送至目标容器,使目标容器执行对应操作。无需登录容器,无需占用容器资源,由此避免了执行命令抢占业务容器资源而导致业务处理失败,提高了业务处理效率。具体地,所述容器的命令执行方法应用于命令执行终端,该命令执行终端可以是包括目标容器的终端,即命令执行终端在目标容器之外,拦截容器命令;也可以是不包括目标容器的终端,即非目标容器所在的另一终端内,拦截容器命令,如命令行终端工具终端(Terminal),用于向主机输入信息和向外部输出信息。本实施例中以Terminal为例进行说明,Terminal在检测到容器命令时,拦截当前的待执行容器命令以及待操作的目标容器。
步骤S20,基于第一数据传输协议将所述待执行容器命令转换为所述目标容器可识别的目标容器指令;
本实施例中,如图3所示,为了防止用户直接操作容器,以及解决Terminal适用的协议无法与容器内适用的协议兼容,需要增加一个代理Proxy(即为代理层),用于进行命令格式转换。具体地,在terminal增加一个代理层,通过该代理层中提供的第一数据传输协议,即SPDY协议,将所述待执行容器命令转换为目标容器可识别的目标容器指令。
以ls/data/app为例进行说明:
用户在输入设备中输入ls/data/app时:
terminal输入发送的数据:{"type":"input","data":"ls/data/app"};
代理层在收到terminal发送过来的数据之后,解析得到命令:
ls/data/app,然后将该命令封装为SPDY协议的数据格式,并将封装后的待执行容器命令发送给容器进行执行。
其中,所述容器的命令执行方法还包括:
在接收到设置指令时,获取所述设置指令中的目标执行指令,并将通过执行指令语法校验的目标执行指令添加至预设指令白名单,以将所述目标执行指令设为合法指令。
本实施例中,可通过白名单的方式将合法指令配置在终端数据库中,比如将ls和grep加入到白名单,则在解析过程中对白名单中的执行命令返回校验成功指令,不在白名单中的指令命令返回校验失败指令,代表解析失败。
其中,所述在检测到目标容器对应的待执行容器命令时,拦截所述待执行容器命令的步骤之后,还包括:
将所述待执行容器命令进行解析,并根据命令关键字判断解析后的待执行容器命令是否为命令集,其中,所述命令集为包括两个及以上的多个子命令集合;
若所述解析后的待执行容器命令不是命令集,则对所述待执行容器命令进行合法性校验;
在所述待执行容器命令未通过所述合法性校验时,生成并显示当前命令不合法的提醒消息,以便提醒用户所述待执行容器命令为不合法容器命令。
在所述待执行容器命令通过所述合法性校验时,执行步骤:步骤S20。
本实施例中,为了提升用户体验,本执行终端可识别多个子命令组成的命令集,具体地,预先存储各类型的命令字段,然后在检测到待执行容器命令为多个子命令集合时,根据分割语句tokens,将拦截到的所述待执行容器命令解析成执行命令字、参数。将命令行分成由固定元字符集分隔的记号:SPACE、TAB、NEWLINE、;、(、)、<、>、|或&等,记号类型包括单词、命令关键字、I/O重定向符和分号,由此得到子命令对应的集合。根据命令关键字判断该子命令对应的集合(即解析后的待执行容器命令集)是否为包括两个及以上的多个子命令集合。若是,则依次对子命令集合中的各个子命令进行循环校验、转换与发送等步骤,由此避免用户只能输入单个子命令而导致的用户体验差或导致降低容器执行效率的问题。若不是,即表示该子命令为单个命令,则根据预设命令白名单或合法数据表,对所述待执行容器命令进行合法性校验。并在所述待执行容器命令未通过所述合法性校验时,生成并显示当前命令不合法的提醒消息,以便提醒用户所述待执行容器命令为不合法容器命令。
以ls-al/data|grep demo.txt为例,该命令是获取/data目录下demo.txt的文件详细信息,具体解析步骤如下:
a)将命令ls-al/data|grep demo.txt分割为ls-al/data和grep demo.txt两个子命令;
b)对分割后的命令进行合法行校验,即校验ls和grep是否为合法命令;
c)对包含子命令的命令进行进一步参数解析,根据ls-al/data,去除ls命令部分,得到-al/data两个参数,去除grep之后得到第二个命令的参数为demo.txt;
d)分别对解析后的子命令进行循环合法性校验。
步骤S30,将所述目标容器指令发送至所述目标容器,以便所述目标容器执行所述待执行容器命令对应的操作。
本实施例中,将转换后的目标容器可识别的目标容器指令发送至目标容器,以便所述目标容器执行所述待执行容器命令对应的操作。目前通过kubectl提供的exec命令行执行命令,需要明确当前操作的Pod归属的命名空间、config配置文件所在目录、是否交互式等内容。而普通用户可能并不知道容器归属的集群,命名空间等内容。因此,通过本实施例的容器命令执行方法可降低用户的容器操作难度,提升用户体验。
本实施例提供一种容器的命令执行方法,通过在检测到目标容器对应的待执行容器命令时,拦截所述待执行容器命令;基于第一数据传输协议将所述待执行容器命令转换为所述目标容器可识别的目标容器指令;将所述目标容器指令发送至所述目标容器,以便所述目标容器执行所述待执行容器命令对应的操作。通过上述方式,本发明将发送至容器的待执行容器命令进行拦截,并根据协议转换将待执行容器转换为目标容器可识别的目标容器指令,然后将可识别的目标容器指令发送至目标容器,使目标容器执行对应操作。无需登录容器,无需占用容器资源,由此避免了执行命令抢占业务容器资源而导致业务处理失败,提高了业务处理效率,解决了现有容器的命令执行方法需要登录容器而容易造成Pod中的资源失衡的技术问题。
进一步地,基于本发明容器的命令执行方法第一实施例,提出本发明容器的命令执行方法第二实施例。
在本实施例中,所述步骤S10之后,还包括:
基于预存自定义简写命令、所述待执行容器命令在所述目标容器中的目标环境变量和目标工作目录,在所述目标容器外生成所述待执行容器命令对应的模拟上下文环境,以基于所述模拟上下文环境接收并识别用户输入指令或显示容器命令的执行结果。
其中,所述基于预存自定义简写命令、所述待执行容器命令在所述目标容器中的目标环境变量和目标工作目录,在所述目标容器外生成所述待执行容器命令对应的模拟上下文环境的步骤具体包括:
基于所述自定义简写命令将所述待执行容器命令转换为容器可识别命令,并基于所述可识别命令确定所述代执行命令对应操作的目标工作目录;
判断所述目标容器中是否存在所述目标工作目录;
若所述目标容器中存在所述目标工作目录,则获取所述目标工作目录对应的目标文件;
基于所述目标环境变量以及所述目标文件,在所述目标容器外生成包含所述目标文件的模拟上下文环境。
本实施例中,通过在terminal中执行拦截的容器命令,而不在容器的ssh环境中执行该命令,为了便于用户了解命令执行结果或便于与用户进行交互,需要在terminal中模拟匹配容器ssh的上下文环境。其中,模拟上下文环境包括目录切换、当前环境变量设置以及当前工作目录维护等,具体地,为了提升容器执行效率,预先自定义简写命令,以便在检测到用户输入的简写命令时,根据预先自定义简写命令进行命令替换,比如,alias ll,其中alias II用于显示当前目录下的文档详细信息(包括权限、所属用户和组、大小、时间、名称等),是Is—I的缩写,相当于windows的快捷方式。在标准的linux命令并不存在aliasII,因此直接将alias II发送到容器中并不能被识别执行。为了避免上述问题,通过在虚拟ssh客户端预先自定义简写命令,即保存用户自定义的命令简写,便于提高容执行效率,提升用户体验。具体实施例中,可预先截取容器命令,通过windows将简写命令转换为对应的可识别容器命令,并降可识别容器命令发送至容器执行。以切换目录的容器指令为例:假设当前目录为/home/test,输入的命令为cd:cd/data/app,这条命令的执行结果是将用户的工作空间从/home/test切换到/data/app目录。
由于terminal并不能直接判断/data/app在目标容器中是否存在,因此需要在容器中执行ls/data/app,即判断该目录是否存在在目标容器中;若不存在则会提示相关的错误;若目标容器中存在/data/app目录,则将/data/app目录中的文件都返回,即通过terminal的当前界面显示与目标容器的目标工作目录相同的页面内容,以便显示容器命令的执行过程与执行结果,或基于所述模拟上下文环境接收用户输入的下一交互指令。若目标容器中存在两个目录,则切换成功,即在terminal以及目标容器中切换当前工作空间至/data/app,若切换失败则提示相关报错,命令执行结束。
进一步地,所述步骤S30之后,还包括:
在接收到所述目标容器基于所述待执行容器命令反馈的结果指令时,基于第二数据传输协议,将所述结果指令转换为所述模拟上下文环境可识别的目标终端指令;
通过所述模拟上下文环境显示所述目标终端指令,以便用户了解所述目标容器执行所述待执行容器命令对应的操作结果。
本实施例中,为了提升用户体验,在所述目标容器执行完所述待执行容器命令对应的操作后,可将执行结果返回至terminal。由于容器内适用的协议无法与Terminal适用的协议兼容,因此需要增加一个代理层Proxy,用于进行命令格式转换。具体地,基于第二数据传输协议,即terminal适用的协议,将容器反馈的结果指令转换为所述模拟上下文环境可识别的目标终端指令。并可通过所述模拟上下文环境显示所述目标终端指令,以便用户了解所述目标容器执行所述待执行容器命令对应的操作结果。以用户在键盘中输入的内容为:ls/data/app为例:
a)terminal输入发送的数据:{"type":"input","data":"ls/data/app"};
b)Prox在收到terminal发送过来的数据之后,解析得到命令:ls/data/app,然后封装为spdy协议,并将转换后的命令发送给容器执行;
c)容器在执行完之后,将结果指令返回给到Proxy;
d)Proxy将返回结果指令转换成为terminal的协议:{"type":"output","data":"test.txt"};
e)Terminal在收到反馈的结果指令数据之后解析协议,并将解析后的data部分数据显示在显示器上,由此完成了一条命令的发送和结果返回。即:
输入:ls/data/app以及输出:test.txt。
具体实施例中,以命令自动补全指令为例:
用户在Linux系统容器中,可以在容器内输入待查找文件的前几个字符,并通过键入tab键,进行文件模糊搜索。本执行终端会获取容器内与该相关字符匹配的文件名,并自动补全显示匹配的文件名的全称。若与该相关字符匹配的文件名有多个,则列举出所有与该相关字符匹配的文件名,便于用户进行选择。如:
在检测到用户键入less lo时,若当前容器目录中有loss和lost+found,则:
截取当前输入的命令“lo”,并搜索以“lo”开头的所有文件和指令,并且通过显示loss和lost+found的文件,以便用户选择;
更多实施例中,以文件编辑操作指令为例:
目前在Linux系统中,编辑文件内容可以通过vi/vim等命令,为了避免在容器中直接便捷文件,对容器资源造成挤压,可以通过以下流程进行处理:
a.判断目标容器中是否存在待查找的文件,若不存在则显示编辑错误指令;
b.若存在所述待查找文件,则进一步判断待查找文件的大小是否超过预设文件大小,比如100m,若所述待查找文件超过预设文件大小,则显示编辑错误指令;
c.若所述待查找文件未超过预设文件大小,则将所述待查找文件到下载到当前终端的临时目录,
d.调用本地vi命令对所述临时目录中的待查找文件执行编辑操作;
e.检测所述临时目录中的待查找文件是否发生变动,若所述临时目录中的待查找文件发生变动,则将所述临时目录中发生变动的待查找文件上传至目标容器,替换容器内的原待查找文件;
f.删除所述临时目录中的待查找文件。
更多实施例中,以top执行指令为例:
top在linux环境中是查看当前系统的进程信息,包括cpu、内存等,该命令可以通过键入q退出,或者通过键入f去筛选。其中,需要针对用户键入内容进行操作的命令,称为交互式命令,交互式的命令执行流程如下:
1.执行终端将用户输入命令发送到远端容器;
2.执行终端将本地的标准输入、标准输出、标准错误绑定到代理层的输入输出流;
3.将代理层的输入输出流绑定到容器的标准输入、标准输出、标准错误。
本发明还提供一种容器的命令执行装置,所述容器的命令执行装置包括:
容器命令拦截模块,用于在检测到目标容器对应的待执行容器命令时,拦截所述待执行容器命令;
输入命令转换模块,用于基于第一数据传输协议将所述待执行容器命令转换为所述目标容器可识别的目标容器指令;
容器命令执行模块,用于将所述目标容器指令发送至所述目标容器,以便所述目标容器执行所述待执行容器命令对应的操作。
进一步地,所述容器的命令执行装置还包括:
容器环境模拟模块,用于基于所述待执行容器命令在所述目标容器中的目标环境变量和目标工作目录,在所述目标容器外生成所述待执行容器命令对应的模拟上下文环境,以基于所述模拟上下文环境接收用户输入指令或显示容器命令的执行结果。
进一步地,所述容器的命令执行装置还包括:
终端指令转换模块,用于在接收到所述目标容器基于所述待执行容器命令反馈的结果指令时,基于第二数据传输协议,将所述结果指令转换为所述模拟上下文环境可识别的目标终端指令;
执行结果显示模块,用于通过所述模拟上下文环境显示所述目标终端指令,以便用户了解所述目标容器执行所述待执行容器命令对应的操作结果。
进一步地,所述容器环境模拟模块具体包括:
目录判断单元,用于判断所述目标容器中是否存在所述目标工作目录;
文件获取单元,用于若所述目标容器中存在所述目标工作目录,则获取所述目标工作目录对应的目标文件;
环境模拟单元,用于基于所述目标环境变量以及所述目标文件,在所述目标容器外生成包含所述目标文件的模拟上下文环境。
进一步地,所述容器的命令执行装置还包括:
命令解析模块,用于将所述待执行容器命令进行解析,并根据命令关键字判断解析后的待执行容器命令是否为命令集,其中,所述命令集为包括两个及以上的多个子命令集合;
合法校验模块,用于若所述解析后的待执行容器命令不是命令集,则对所述待执行容器命令进行合法性校验;
进一步地,所述容器的命令执行装置还包括:
不合法提醒模块,用于在所述待执行容器命令未通过所述合法性校验时,生成并显示当前命令不合法的提醒消息,以便提醒用户所述待执行容器命令为不合法容器命令。
进一步地,所述合法校验模块还用于:
在所述待执行容器命令通过所述合法性校验时,执行步骤:基于第一数据传输协议将所述待执行容器命令转换为所述目标容器可识别的目标容器指令。
进一步地,所述容器的命令执行装置还包括:
在接收到设置指令时,获取所述设置指令中的目标执行指令,并将通过执行指令语法校验的目标执行指令添加至预设指令白名单,以将所述目标执行指令设为合法指令。
上述各程序模块所执行的方法可参照本发明容器的命令执行方法各个实施例,此处不再赘述。
本发明还提供一种计算机可读存储介质。
本发明计算机可读存储介质上存储有容器的命令执行程序,所述容器的命令执行程序被处理器执行时实现如上所述的容器的命令执行方法的步骤。
其中,在所述处理器上运行的容器的命令执行程序被执行时所实现的方法可参照本发明容器的命令执行方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (11)
1.一种容器的命令执行方法,其特征在于,所述容器的命令执行方法包括如下步骤:
在检测到目标容器对应的待执行容器命令时,拦截所述待执行容器命令;
基于第一数据传输协议将所述待执行容器命令转换为所述目标容器可识别的目标容器指令;
将所述目标容器指令发送至所述目标容器,以便所述目标容器执行所述待执行容器命令对应的操作。
2.如权利要求1所述的容器的命令执行方法,其特征在于,所述在检测到目标容器对应的待执行容器命令时,拦截所述待执行容器命令的步骤之后,还包括:
基于预存自定义简写命令、所述待执行容器命令在所述目标容器中的目标环境变量和目标工作目录,在所述目标容器外生成所述待执行容器命令对应的模拟上下文环境,以基于所述模拟上下文环境接收并识别用户输入指令或显示容器命令的执行结果。
3.如权利要求2所述的容器的命令执行方法,其特征在于,所述将所述目标容器指令发送至所述目标容器,以便所述目标容器执行所述待执行容器命令对应的操作的步骤之后,还包括:
在接收到所述目标容器基于所述待执行容器命令反馈的结果指令时,基于第二数据传输协议,将所述结果指令转换为所述模拟上下文环境可识别的目标终端指令;
通过所述模拟上下文环境显示所述目标终端指令,以便用户了解所述目标容器执行所述待执行容器命令对应的操作结果。
4.如权利要求2所述的容器的命令执行方法,其特征在于,所述基于预存自定义简写命令、所述待执行容器命令在所述目标容器中的目标环境变量和目标工作目录,在所述目标容器外生成所述待执行容器命令对应的模拟上下文环境的步骤具体包括:
基于所述自定义简写命令将所述待执行容器命令转换为容器可识别命令,并基于所述可识别命令确定所述代执行命令对应操作的目标工作目录;
判断所述目标容器中是否存在所述目标工作目录;
若所述目标容器中存在所述目标工作目录,则获取所述目标工作目录对应的目标文件;
基于所述目标环境变量以及所述目标文件,在所述目标容器外生成包含所述目标文件的模拟上下文环境。
5.如权利要求1所述的容器的命令执行方法,其特征在于,所述在检测到目标容器对应的待执行容器命令时,拦截所述待执行容器命令的步骤之后,还包括:
将所述待执行容器命令进行解析,并根据命令关键字判断解析后的待执行容器命令是否为命令集,其中,所述命令集为包括两个及以上的多个子命令集合;
若所述解析后的待执行容器命令不是命令集,则对所述待执行容器命令进行合法性校验;
在所述待执行容器命令通过所述合法性校验时,执行步骤:基于第一数据传输协议将所述待执行容器命令转换为所述目标容器可识别的目标容器指令。
6.如权利要求5所述的容器的命令执行方法,其特征在于,所述若所述解析后的待执行容器命令不是命令集,则对所述待执行容器命令进行合法性校验的步骤之后,还包括:
在所述待执行容器命令未通过所述合法性校验时,生成并显示当前命令不合法的提醒消息,以便提醒用户所述待执行容器命令为不合法容器命令。
7.如权利要1-6中任一项所述的容器的命令执行方法,其特征在于,所述容器的命令执行方法还包括:
在接收到设置指令时,获取所述设置指令中的目标执行指令,并将通过执行指令语法校验的目标执行指令添加至预设指令白名单,以将所述目标执行指令设为合法指令。
8.一种容器的命令执行装置,其特征在于,所述容器的命令执行装置包括:
容器命令拦截模块,用于在检测到目标容器对应的待执行容器命令时,拦截所述待执行容器命令;
输入命令转换模块,用于基于第一数据传输协议将所述待执行容器命令转换为所述目标容器可识别的目标容器指令;
容器命令执行模块,用于将所述目标容器指令发送至所述目标容器,以便所述目标容器执行所述待执行容器命令对应的操作。
9.如权利要求8所述的容器的命令执行装置,其特征在于,所述容器的命令执行装置还包括:
容器环境模拟模块,用于基于所述待执行容器命令在所述目标容器中的目标环境变量和目标工作目录,在所述目标容器外生成所述待执行容器命令对应的模拟上下文环境,以基于所述模拟上下文环境接收用户输入指令或显示容器命令的执行结果。
10.一种容器的命令执行设备,其特征在于,所述容器的命令执行设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的容器的命令执行程序,所述容器的命令执行程序被所述处理器执行时实现如权利要求1至7中任一项所述的容器的命令执行方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有容器的命令执行程序,所述容器的命令执行程序被处理器执行时实现如权利要求1至7中任一项所述的容器的命令执行方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010527639.0A CN111680288A (zh) | 2020-06-10 | 2020-06-10 | 容器的命令执行方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010527639.0A CN111680288A (zh) | 2020-06-10 | 2020-06-10 | 容器的命令执行方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111680288A true CN111680288A (zh) | 2020-09-18 |
Family
ID=72454540
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010527639.0A Pending CN111680288A (zh) | 2020-06-10 | 2020-06-10 | 容器的命令执行方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111680288A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113849819A (zh) * | 2021-09-24 | 2021-12-28 | 苏州浪潮智能科技有限公司 | 命令行指令的处理方法、装置、计算机设备和存储介质 |
CN117348951A (zh) * | 2023-12-04 | 2024-01-05 | 北京长扬软件有限公司 | 应用于linux内核的容器感知装置和容器感知方法 |
-
2020
- 2020-06-10 CN CN202010527639.0A patent/CN111680288A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113849819A (zh) * | 2021-09-24 | 2021-12-28 | 苏州浪潮智能科技有限公司 | 命令行指令的处理方法、装置、计算机设备和存储介质 |
CN113849819B (zh) * | 2021-09-24 | 2023-07-14 | 苏州浪潮智能科技有限公司 | 命令行指令的处理方法、装置、计算机设备和存储介质 |
CN117348951A (zh) * | 2023-12-04 | 2024-01-05 | 北京长扬软件有限公司 | 应用于linux内核的容器感知装置和容器感知方法 |
CN117348951B (zh) * | 2023-12-04 | 2024-02-09 | 北京长扬软件有限公司 | 应用于linux内核的容器感知装置和容器感知方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111078315B (zh) | 微服务编排、执行方法及系统、架构、设备、存储介质 | |
EP3404542A1 (en) | Data pipeline architecture for analytics processing stack | |
US11327964B2 (en) | Integration query builder framework | |
CN106406844B (zh) | 实现通讯交互平台公众号菜单的方法和装置 | |
AU2014400621B2 (en) | System and method for providing contextual analytics data | |
CN113971110A (zh) | 接口测试方法、装置、设备与计算机可读存储介质 | |
US20220147498A1 (en) | Generation of schemas with error resolve | |
CN111680288A (zh) | 容器的命令执行方法、装置、设备及存储介质 | |
CN111679886A (zh) | 异构计算资源调度方法、系统、电子设备及存储介质 | |
CN113268245A (zh) | 代码分析方法、装置及存储介质 | |
CN113407882A (zh) | 组件生成方法、装置、计算机可读存储介质及电子设备 | |
CN113760763A (zh) | 软件测试方法、设备、服务器和系统 | |
CN111026669A (zh) | 测试日志管理方法、测试日志管理装置及存储介质 | |
US11030087B2 (en) | Systems and methods for automated invocation of accessibility validations in accessibility scripts | |
US10965663B2 (en) | Troubleshooting single sign on failure | |
US10862737B1 (en) | Technical procedure knowledge sharing system for service issue investigation | |
CN113779018A (zh) | 一种数据处理方法和装置 | |
US20190196945A1 (en) | Entity performance and usability analysis framework | |
CN108563677B (zh) | 数据显示方法、装置、电子设备及存储介质 | |
CN116483483B (zh) | 数据查询方法、装置及电子设备 | |
CN114785604B (zh) | 一种动态日志解析方法、装置、设备及存储介质 | |
CN117235052B (zh) | 一种数据库语句处理方法和装置 | |
CN110019030B (zh) | 分割文件的方法和装置 | |
CN116737577A (zh) | 一种单元测试覆盖率的分析方法、装置、设备及存储介质 | |
CN111151008A (zh) | 游戏运营数据的校验方法、装置、配置后台及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |