CN106506565B - 一种远程命令执行方法及设备 - Google Patents
一种远程命令执行方法及设备 Download PDFInfo
- Publication number
- CN106506565B CN106506565B CN201710004788.7A CN201710004788A CN106506565B CN 106506565 B CN106506565 B CN 106506565B CN 201710004788 A CN201710004788 A CN 201710004788A CN 106506565 B CN106506565 B CN 106506565B
- Authority
- CN
- China
- Prior art keywords
- command
- remote
- server
- execution
- client
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- 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/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请的目的是提供一种远程命令执行方法设备,该方法包括:客户端携带简单身份验证和安全层SASL认证信息,通过套接字socket连接服务器端;接收服务器端返回的登录成功响应,登录成功后,客户端保持该次连接,并将该连接放入到一个连接队列中;设置远程调用命令,转换成字节流,密文发送给服务器端;接收服务器端返回的远程执行命令ID,将该远程执行命令ID及其对应的远程执行命令放入执行队列;根据该远程执行命令ID接收服务器端执行远程命令后的返回信息。本申请基于SASL认证,可以使客户端很方便的执行服务器端的命令,并且使远程命令执行对平台没有要求,实现了全平台化。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种远程命令执行方法及设备。
背景技术
随着分布式服务的发展,特别是云计算的大力推动,远程调用已经成为常态,而常见的远程调用有远程方法调用(RMI,Remote Method Invocation)、多功能网络应用程序框架(MINA,Multipurpose Infrastructure for Network Applications)、简单对象访问协议(SOAP,Simple Object Access Protocol)主导的网络服务Web Service;还有Unix及类Unix下的安全壳协议(SSH,Secure Shell)远程执行命令,但它们存在如下缺陷和问题:
(一)Web Service仅限于远程方法调用:
以RMI、MINA、SOAP为主导的Web Service最初设计理念是远程执行方法,远端执行完之后,将结果返回给本地,通讯具体细节对调用方法的用户透明。Web Service使远程调用变得简单,但其仅限于远程方法调用,相对远程命令执行存在以下缺点:
1、客户端和服务器代码都需要维护,增加了代码维护难度。当增加客户端远程调用服务器方法时,客户端和服务器的代码都得改,这样会无形中增加了开发成本和测试成本。
2、业务和框架逻辑没有很好的分开。当客户端远程调用服务器方法时,客户端负责方法调用,服务器端负责业务的实现。如果远程调用一旦增加需求,客户端和服务器端就必须增加新的业务调用与实现,随着业务增多,客户端和服务器代码都会变得越来越臃肿,如此可见,Web Service并没有将业务和框架很好的分离开。
(二)SSH远程命令执行仅限于系统管理:
客户端利用SSH远程执行命令可以解决Web Sevice的上述问题,即只要根据业务需求增加客户端的远程命令的执行,服务器端实现远程命令的执行,保证服务器端框架代码不做改变,大大减少了代码维护难度,但SSH不适合系统开发,原因如下:
1、SSH虽然是平台无关的协议,但在各个平台上部署有差异。如windows系统要装第三方工具才能访问unix或类unix。
1、SSH优势用于系统管理,在系统开发过程中使用SSH会有诸多限制,如必须开启SSH服务,必须知道对端用户名密码等。
综上,现有远程执行命令需使用用户名密码方式进行鉴权,不仅造成使用不方便,而且易导致机密信息的泄露,极不安全,即使依靠密匙,也必须知道自己密匙的口令,整个登录的过程缓慢,可能需要10秒。此外,SSH客户端虽可适用于多种平台,但对平台的部署有一定限制。
发明内容
针对上述现有技术的缺陷,本申请的一个目的是提供一种基于简单身份验证和安全层(SASL,Simple Authentication and Security Layer)的远程命令执行方法及设备,解决现有远程执行命令需使用用户名密码方式进行鉴权,不仅造成使用不方便,而且易导致机密信息的泄露,极不安全,SSH客户端虽可适用于多种平台,但对平台的部署有限制等问题。
根据本申请的一个方面,提供了一种远程命令执行方法,该方法包括:
客户端携带简单身份验证和安全层SASL认证信息,通过套接字socket连接服务器端;
接收服务器端返回的登录成功响应,登录成功后,客户端保持该次连接,并将该连接放入到一个连接队列中;
设置远程调用命令,转换成字节流,密文发送给服务器端;
接收服务器端返回的远程执行命令ID,将该远程执行命令ID及其对应的远程执行命令放入执行队列;
根据该远程执行命令ID接收服务器端执行远程命令后的返回信息。
进一步地,上述方法中,所述客户端通过自带心跳,与服务器端保持长连接。
进一步地,上述方法中,所述客户端对与服务器端建立的长连接保持一个连接状态机,用以判断连接状态是否良好,如若连接异常,则进行重新连接。
进一步地,上述方法中,所述设置远程调用命令,具体包括:
设置远程调用的命令、环境变量以及远程调用命令所在服务器端目录的参数。
进一步地,上述方法中,所述根据远程执行命令ID接收服务器端执行完远程命令后的返回信息,具体为:
根据远程执行命令ID分别接收服务器端执行完远程命令后的返回值、标准输出信息以及标准错误输出信息,将标准输出信息的内容写入本地文件。
进一步地,上述方法中,若接收到的服务器端的返回值为0,则远程执行命令完成,否则远程执行命令失败,标准错误输出信息会记录失败原因。
进一步地,上述方法中,当客户端接收到服务器端的返回信息后,还包括:
回收该次远程命令执行的资源,删除执行队列中该远程执行命令。
进一步地,上述方法中,当客户端取消远程调用命令时,包括:
客户端将取消该远程调用命令的指令及对应取消命令ID,转换成字节码密文发送给服务器端;
接收服务器端终止远程调用的返回值,回收远程调用资源。
进一步地,上述方法中,当客户端取消所有的远程调用命令时,等待服务器端终止所有远程调用的返回值,而后关闭与服务器端的连接,将该连接从连接队列中删除。
根据本申请的一个方面,提供了另一种远程命令执行方法,该方法包括:
服务器端利用简单身份验证和安全层SASL认证判断客户端的认证信息是否合法,如是,则返回登录成功响应至客户端;
接收客户端发送的数据,通过解密并将字节码转换成远程执行命令,生成一个远程执行命令ID发送至客户端,并将该远程执行命令ID及其对应远程执行命令放入执行队列;
服务器端执行该远程命令,并读取该远程命令的返回信息,携带远程执行命令ID转换成字节码,密文发送至客户端。
进一步地,上述方法中,所述读取该远程命令的返回信息,具体包括:
读取该远程命令返回值、标准输出信息以及标准错误输出信息。
进一步地,上述方法中,当服务器端发送给客户端执行远程命令的返回信息之后,还包括:
回收该次远程执行命令的资源,删除执行队列中该远程执行命令。
进一步地,上述方法中,当服务器端接收客户端发送的数据,通过解密并转换字节码,得到取消远程调用命令及其对应取消命令ID时,包括:
将该取消远程调用命令及其对应取消命令ID放入执行队列;
终止远程执行命令进程,将终止远程调用的返回值,携带命令ID转换成字节码,密文发送至客户端;
回收该次取消远程执行命令的资源,删除执行队列中该取消远程命令。
进一步地,上述方法中,当服务器端终止所有与该客户端连接的远程执行命令进程时,将终止所有远程调用的返回值发送给客户端,而后关闭与客户端的连接。
根据本申请的另一个方面,提供了一种远程命令执行设备,该设备包括:
连接模块,携带简单身份验证和安全层SASL认证信息,通过套接字socket连接服务器端;
保持模块,接收服务器端返回的登录成功响应,登录成功后,客户端保持该次连接,并将该连接放入到一个连接队列中;
设置模块,设置远程调用命令,转换成字节流,密文发送给服务器端;
存储模块,接收服务器端返回的远程执行命令ID,将该远程执行命令ID及其对应的远程执行命令放入执行队列;
接收模块,根据该远程执行命令ID接收服务器端执行远程命令后的返回信息。
进一步地,上述设备中,还包括:
长连接模块,用于通过自带心跳,与服务器端保持长连接。
进一步地,上述设备中,还包括:
判断模块,用于与服务器端建立的长连接保持一个连接状态机,判断连接状态是否良好,如若连接异常,则进行重新连接。
进一步地,上述设备中,所述设置模块,具体用于设置远程调用的命令、环境变量以及远程调用命令所在服务器端目录的参数。
进一步地,上述设备中,所述接收模块,具体用于根据远程执行命令ID分别接收服务器端执行完远程命令后的返回值、标准输出信息以及标准错误输出信息,将标准输出信息的内容写入本地文件。
进一步地,上述设备中,若所述接收模块接收到的服务器端的返回值为0,则远程执行命令完成,否则远程执行命令失败,标准错误输出信息会记录失败原因。
进一步地,上述设备中,还包括:
第一回收删除模块,用于回收该次远程命令执行的资源,删除执行队列中该远程执行命令。
进一步地,上述设备中,所述设置模块,具体用于设置取消远程调用命令时,包括:
发送单元,用于将取消该远程调用命令的指令及对应取消命令ID,转换成字节码密文发送给服务器端;
接收回收单元,用于接收服务器端终止远程调用的返回值,回收远程调用资源。
进一步地,上述设备中,所述设置模块,具体用于取消所有的远程调用命令时,等待服务器端终止所有远程调用的返回值,而后关闭与服务器端的连接,将该连接从连接队列中删除。
根据本申请的另一个方面,提供了另一种远程命令执行设备,该设备包括:
认证模块,用于通过简单身份验证和安全层SASL认证判断客户端的认证信息是否合法,如是,则返回登录成功响应至客户端;
生成模块,用于接收客户端发送的数据,通过解密并将字节码转换成远程执行命令,生成一个远程执行命令ID发送至客户端,并将该远程执行命令ID及其对应远程执行命令放入执行队列;
执行模块,用于执行该远程命令,并读取该远程命令的返回信息,携带远程执行命令ID转换成字节码,密文发送至客户端。
进一步地,上述设备中,所述执行模块,具体用于读取该远程命令返回值、标准输出信息以及标准错误输出信息。
进一步地,上述设备中,还包括:
第二回收删除模块,具体用于回收该次远程执行命令的资源,删除执行队列中该远程执行命令。
进一步地,上述设备中,所述生成模块接收客户端发送的数据,通过解密并转换字节码,得到取消远程调用命令及其对应取消命令ID时,包括:
放置单元,用于将该取消远程调用命令及其对应取消命令ID放入执行队列;
操作单元,用于终止远程执行命令进程,将终止远程调用的返回值,携带命令ID转换成字节码,密文发送至客户端;
回收删除单元,用于回收该次取消远程执行命令的资源,删除执行队列中该取消远程命令。
进一步地,上述设备中,所述操作单元,具体用于终止所有与该客户端连接的远程执行命令进程时,将终止所有远程调用的返回值发送给客户端,而后关闭与客户端的连接。
与现有技术相比,本申请客户端携带简单身份验证和安全层SASL认证信息,通过套接字socket连接服务器端,保证远程命令执行的安全性;接收服务器端返回的登录成功响应,登录成功后,客户端保持该次连接,并将该连接放入到一个连接队列中;客户端通过身份认证,安全连接上登录服务器,保持此次连接,以便之后的远程命令调用通过该连接与服务器端进行消息通讯;设置远程调用命令,转换成字节流,密文发送给服务器端;接收服务器端返回的远程执行命令ID,将该远程执行命令ID及其对应的远程执行命令放入执行队列;根据该远程执行命令ID接收服务器端执行远程命令后的返回信息。本申请基于SASL认证,可以使客户端很方便的执行服务器端的命令,并且使远程命令执行对平台没有要求,实现了全平台化。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个方面的一种远程命令执行方法流程图;
图2示出根据本申请一个方面的一种远程命令取消方法流程图;
图3示出根据本申请一个方面的另一种远程命令执行方法流程图;
图4示出根据本申请一个方面的另一种远程命令取消方法流程图;
图5示出根据本申请另一个方面的一种远程命令执行设备结构示意图;
图6示出根据本申请另一个方面的一种远程命令取消设备结构示意图;
图7示出根据本申请另一个方面的另一种远程命令执行设备结构示意图;
图8示出根据本申请另一个方面的另一种远程命令取消设备结构示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
下面结合说明书附图对本申请实施例作进一步详细描述。
如图1所示,根据本申请的一个方面,提供了一种远程命令执行方法,其中,所述方法包括:
步骤S101,客户端携带简单身份验证和安全层SASL认证信息,通过套接字socket连接服务器端;
步骤S102,接收服务器端返回的登录成功响应,登录成功后,客户端保持该次连接,并将该连接放入到一个连接队列中;
步骤S103,设置远程调用命令,转换成字节流,密文发送给服务器端;
步骤S104,接收服务器端返回的远程执行命令ID,将该远程执行命令ID及其对应的远程执行命令放入执行队列;
步骤S105,根据该远程执行命令ID接收服务器端执行远程命令后的返回信息。
简单身份验证和安全层(SASL,Simple Authentication and Security Layer)是一种为身份验证协议提供抽象层的API,API是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的API而使操作系统去执行应用程序的命令(动作)。
本申请实施例基于扩充客户机和服务器结构(C/S结构)模式验证能力机制的简单身份验证和安全层SASL认证,数据在网络中以密文形式传送,保证了数据安全性,降低了系统的通讯开销,使客户端安全的执行服务器端的命令,并对客户端和服务器端没有任何平台限制。本申请实施例客户端通过身份认证,安全连接上登录服务器,如果身份认证不通过,服务器会拒绝客户端的连接,保证了远程命令执行的安全性。
进一步地,上述方法中,所述客户端通过自带心跳,与服务器端保持长连接。
本申请实施例,登录成功后,客户端和服务器端通过自带心跳,保持长连接状态,以免频繁多次远程调用增加通讯的开销。
进一步地,上述方法中,所述客户端对与服务器端建立的长连接保持一个连接状态机,用以判断连接状态是否良好,如若连接异常,则进行重新连接。
本申请实施例,客户端会对与服务器端建立的长连接保持一个连接状态机,用以判断连接状态是否良好,如若连接异常,会自行进行重连,以免客户端远程执行命令时,使用一个无效的连接。
进一步地,上述方法中,所述设置远程调用命令,具体包括:设置远程调用的命令、环境变量以及远程调用命令所在服务器端目录的参数。
具体的,本申请实施例客户端设置远程调用的命令、环境变量及命令所在服务器端目录等参数,并给一个远程调用命令,通过转换成字节码密文向服务器端发送。
进一步地,上述方法中,所述根据远程执行命令ID接收服务器端执行完远程命令后的返回信息,具体为:
根据远程执行命令ID分别接收服务器端执行完远程命令后的返回值、标准输出信息以及标准错误输出信息,将标准输出信息的内容写入本地文件。
本申请实施例,客户端开启三个线程,根据远程执行命令ID分别接收服务器端执行完远程命令后的返回值、标准输出信息以及标准错误输出信息。
进一步地,上述方法中,若接收到的服务器端的返回值为0,则远程执行命令完成,否则远程执行命令失败,标准错误输出信息会记录失败原因。
进一步地,上述方法中,当客户端接收到服务器端的返回信息后,还包括:
回收该次远程命令执行的资源,删除执行队列中该远程执行命令。
本申请实施例,当客户端接收到返回值后,回收此次远程命令执行的资源,结束相关线程并从执行队列中删除该远程执行的命令。
进一步地,上述方法中,如图2所示,当客户端取消远程调用命令时,包括:
步骤S201,客户端将取消该远程调用命令的指令及对应取消命令ID,转换成字节码密文发送给服务器端;
步骤S202,接收服务器端终止远程调用的返回值,回收远程调用资源。
本申请实施例,客户端将取消该远程调用命令的指令及对应命令ID,转换成字节码密文发送给服务器;等到客户端接收到该远程调用的返回值后,便回收远程调用资源。
进一步地,上述方法中,当客户端取消所有的远程调用命令时,等待服务器端终止所有远程调用的返回值,而后关闭与服务器端的连接,将该连接从连接队列中删除。
本发明实施例,当客户端不需要再进行远程调用的时候,即取消所有的远程调用命令,等待服务器端终止所有远程调用的返回值,而后关闭与服务器端的连接,将该连接从连接队列中删除。此外,在系统存在异常情况下,如:断网、关机、机器崩溃等情况时,客户端即可关闭与服务器端的连接。
如图3所示,根据本申请的一个方面,提供了另一种远程命令执行方法,该方法包括:
步骤S301,服务器端利用简单身份验证和安全层SASL认证判断客户端的认证信息是否合法,如是,则返回登录成功响应至客户端;
步骤S302,接收客户端发送的数据,通过解密并将字节码转换成远程执行命令,生成一个远程执行命令ID发送至客户端,并将该远程执行命令ID及其对应远程执行命令放入执行队列;
步骤S303,服务器端执行该远程命令,并读取该远程命令的返回信息,携带远程执行命令ID转换成字节码,密文发送至客户端。
进一步地,上述步骤S303中,所述读取该远程命令的返回信息,具体包括:
读取该远程命令返回值、标准输出信息以及标准错误输出信息。
本申请实施例,服务器端利用SASL认证判断该客户端连接是否合法,并返回客户端登录成功与否。本申请实施例基于SASL认证,数据在网络中以密文形式传送,保证了数据安全性,降低了系统的通讯开销,使客户端安全的执行服务器端的命令,并对客户端和服务器端没有任何平台限制。
具体实施中,本申请服务器端开启一个线程执行该命令,并开启三个线程,分别读取该命令返回值、标准输出信息、标准错误输出信息,并携带执行命令ID转换成字节码,密文发给客户端。
进一步地,上述方法中,当服务器端发送给客户端执行远程命令的返回信息之后,还包括:
回收该次远程执行命令的资源,删除执行队列中该远程执行命令。
本申请实施例,当本地命令返回后,服务器端即可回收此次执行命令的资源,结束相关线程并从执行队列中删除该执行命令。
进一步地,如图4所示,当服务器端接收客户端发送的数据,通过解密并转换字节码,得到取消远程调用命令及其对应取消命令ID时,包括:
S401,将该取消远程调用命令及其对应取消命令ID放入执行队列;
S402,终止远程执行命令进程,将终止远程调用的返回值,携带命令ID转换成字节码,密文发送至客户端;
S403回收该次取消远程执行命令的资源,删除执行队列中该取消远程命令。
本申请实施例,服务器端通过解密并转换字节码,得到取消远程命令及其相应ID,服务器端终止该本地命令进程,当本地命令返回后,携带执行命令ID转换成字节码,密文发送给客户端,即可回收此次命令的资源,结束相关线程并从执行队列中删除该命令。
进一步地,上述方法中,当服务器端终止所有与该客户端连接的远程执行命令进程时,将终止所有远程调用的返回值发送给客户端,而后关闭与客户端的连接。
本发明实施例,当服务器端终止所有与该客户端连接所对应的本地进程后,将终止所有远程调用的返回值发送给客户端,关闭与客户端的连接。此外,在系统存在异常情况下,如:断网、关机、机器崩溃等情况时,服务器端也可关闭与客户端的连接。
本申请实施例,基于SASL认证,使客户端安全的执行服务器端的命令,并对客户端和服务器没有任何平台限制,实现了全平台化。本申请客户端可同时远程执行多条服务器端命令,并相互无干扰;客户端也可同时向多个服务器发送远程执行命令。本申请业务增加或改变时,在客户端增加远程调用命令,在服务器端单独进行命令的业务实现,服务器框架不做任何改变,深度优化了系统结构,显著降低了代码耦合度,以及代码的维护难度,提高了开发效率。本申请实施例可用于服务器向各个客户端安全的发起远程执行命令操作,并对服务器和客户端无任何平台要求。
基于相同的技术构思,本申请还提供一种基于安全套接层协议认证的文件传输设备,该设备可执行上述方法实施例,由于该设备解决问题的原理与前述一种基于安全套接层协议认证的文件传输方法相似,因此该设备的实施可以参见方法的实施。
本申请的另一个方面提供了一种远程命令执行设备,如图5所示,该设备包括:
连接模块501,携带简单身份验证和安全层SASL认证信息,通过套接字socket连接服务器端;
保持模块502,接收服务器端返回的登录成功响应,登录成功后,客户端保持该次连接,并将该连接放入到一个连接队列中;
设置模块503,设置远程调用命令,转换成字节流,密文发送给服务器端;
存储模块504,接收服务器端返回的远程执行命令ID,将该远程执行命令ID及其对应的远程执行命令放入执行队列;
接收模块505,根据该远程执行命令ID接收服务器端执行远程命令后的返回信息。
简单身份验证和安全层(SASL,Simple Authentication and Security Layer)是一种为身份验证协议提供抽象层的API,API是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的API而使操作系统去执行应用程序的命令(动作)。
本申请实施例基于扩充客户机和服务器结构(C/S结构)模式验证能力机制的简单身份验证和安全层SASL认证,数据在网络中以密文形式传送,保证了数据安全性,降低了系统的通讯开销,使客户端安全的执行服务器端的命令,并对客户端和服务器端没有任何平台限制。本申请实施例客户端通过身份认证,安全连接上登录服务器,如果身份认证不通过,服务器会拒绝客户端的连接,保证了远程命令执行的安全性。
进一步地,上述设备中,还包括:
长连接模块,用于通过自带心跳,与服务器端保持长连接。
本申请实施例,登录成功后,客户端和服务器端通过自带心跳,保持长连接状态,以免频繁多次远程调用增加通讯的开销。
进一步地,上述设备中,还包括:
判断模块,用于与服务器端建立的长连接保持一个连接状态机,判断连接状态是否良好,如若连接异常,则进行重新连接。
本申请实施例,客户端会对与服务器端建立的长连接保持一个连接状态机,用以判断连接状态是否良好,如若连接异常,会自行进行重连,以免客户端远程执行命令时,使用一个无效的连接。
进一步地,上述设备中,所述设置模块,具体用于设置远程调用的命令、环境变量以及远程调用命令所在服务器端目录的参数。
具体的,本申请实施例客户端设置远程调用的命令、环境变量及命令所在服务器端目录等参数,并给一个远程调用命令,通过转换成字节码密文向服务器端发送。
进一步地,上述设备中,所述接收模块,具体用于根据远程执行命令ID分别接收服务器端执行完远程命令后的返回值、标准输出信息以及标准错误输出信息,将标准输出信息的内容写入本地文件。
本申请实施例,客户端开启三个线程,根据远程执行命令ID分别接收服务器端执行完远程命令后的返回值、标准输出信息以及标准错误输出信息。
进一步地,上述设备中,若所述接收模块接收到的服务器端的返回值为0,则远程执行命令完成,否则远程执行命令失败,标准错误输出信息会记录失败原因。
进一步地,上述设备中,还包括:
第一回收删除模块,用于回收该次远程命令执行的资源,删除执行队列中该远程执行命令。
本申请实施例,当客户端接收到返回值后,回收此次远程命令执行的资源,结束相关线程并从执行队列中删除该远程执行的命令。
进一步地,如图6所示,所述设置模块,具体用于设置取消远程调用命令时,包括:
发送单元601,用于将取消该远程调用命令的指令及对应取消命令ID,转换成字节码密文发送给服务器端;
接收回收单元602,用于接收服务器端终止远程调用的返回值,回收远程调用资源。
本申请实施例,客户端将取消该远程调用命令的指令及对应命令ID,转换成字节码密文发送给服务器;等到客户端接收到该远程调用的返回值后,便回收远程调用资源。
进一步地,上述设备中,所述设置模块,具体用于取消所有的远程调用命令时,等待服务器端终止所有远程调用的返回值,而后关闭与服务器端的连接,将该连接从连接队列中删除。
本申请实施例,当设置模块不需要再进行远程调用的时候,即取消所有的远程调用命令,等待服务器端终止所有远程调用的返回值,而后关闭与服务器端的连接,将该连接从连接队列中删除。此外,在系统存在异常情况下,如:断网、关机、机器崩溃等情况时,客户端即可关闭与服务器端的连接。
根据本申请的另一个方面,提供了另一种远程命令执行设备,如图7所示,该设备包括:
认证模块701,用于通过简单身份验证和安全层SASL认证判断客户端的认证信息是否合法,如是,则返回登录成功响应至客户端;
生成模块702,用于接收客户端发送的数据,通过解密并将字节码转换成远程执行命令,生成一个远程执行命令ID发送至客户端,并将该远程执行命令ID及其对应远程执行命令放入执行队列;
执行模块703,用于执行该远程命令,并读取该远程命令的返回信息,携带远程执行命令ID转换成字节码,密文发送至客户端。
进一步地,上述设备中,所述执行模块703,具体用于读取该远程命令返回值、标准输出信息以及标准错误输出信息。
本申请实施例,服务器端利用SASL认证判断该客户端连接是否合法,并返回客户端登录成功与否。本申请实施例基于SASL认证,数据在网络中以密文形式传送,保证了数据安全性,降低了系统的通讯开销,使客户端安全的执行服务器端的命令,并对客户端和服务器端没有任何平台限制。
具体实施中,本申请服务器端开启一个线程执行该命令,并开启三个线程,分别读取该命令返回值、标准输出信息、标准错误输出信息,并携带执行命令ID转换成字节码,密文发给客户端。
进一步地,上述设备中,还包括:
第二回收删除模块,具体用于回收该次远程执行命令的资源,删除执行队列中该远程执行命令。
本申请实施例,当本地命令返回后,服务器端即可回收此次执行命令的资源,结束相关线程并从执行队列中删除该执行命令。
进一步地,如图8所示,所述生成模块接收客户端发送的数据,通过解密并转换字节码,得到取消远程调用命令及其对应取消命令ID时,包括:
放置单元801,用于将该取消远程调用命令及其对应取消命令ID放入执行队列;
操作单元802,用于终止远程执行命令进程,将终止远程调用的返回值,携带命令ID转换成字节码,密文发送至客户端;
回收删除单元803,用于回收该次取消远程执行命令的资源,删除执行队列中该取消远程命令。
本申请实施例,服务器端通过解密并转换字节码,得到取消远程命令及其相应ID,服务器端终止该本地命令进程,当本地命令返回后,携带执行命令ID转换成字节码,密文发送给客户端,即可回收此次命令的资源,结束相关线程并从执行队列中删除该命令。
进一步地,上述设备中,所述操作单元,具体用于终止所有与该客户端连接的远程执行命令进程时,将终止所有远程调用的返回值发送给客户端,而后关闭与客户端的连接。
本发明实施例,当操作单元终止所有与该客户端连接所对应的本地进程后,将终止所有远程调用的返回值发送给客户端,关闭与客户端的连接。此外,在系统存在异常情况下,如:断网、关机、机器崩溃等情况时,服务器端也可关闭与客户端的连接。
本申请实施例,基于SASL认证,使客户端安全的执行服务器端的命令,并对客户端和服务器没有任何平台限制,实现了全平台化。本申请客户端可同时远程执行多条服务器端命令,并相互无干扰;客户端也可同时向多个服务器发送远程执行命令。本申请业务增加或改变时,在客户端增加远程调用命令,在服务器端单独进行命令的业务实现,服务器框架不做任何改变,深度优化了系统结构,显著降低了代码耦合度,以及代码的维护难度,提高了开发效率。本申请实施例可用于服务器向各个客户端安全的发起远程执行命令操作,并对服务器和客户端无任何平台要求。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,在本申请一实施例中,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,在本申请一实施例中,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,在本申请一实施例中,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,在本申请一实施例中计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在本申请一实施例中,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (28)
1.一种远程命令执行方法,其特征在于,该方法包括:
客户端携带简单身份验证和安全层SASL认证信息,通过套接字socket连接服务器端;
接收服务器端返回的登录成功响应,登录成功后,客户端保持与所述服务器端连接,并将该连接放入到一个连接队列中;
设置远程调用命令,转换成字节流,密文发送给服务器端;
接收服务器端返回的远程执行命令ID,将该远程执行命令ID及其对应的远程执行命令放入执行队列;
根据该远程执行命令ID接收服务器端执行远程命令后的返回信息。
2.如权利要求1所述的方法,其特征在于,所述客户端通过自带心跳,与服务器端保持长连接。
3.如权利要求2所述的方法,其特征在于,所述客户端对与服务器端建立的长连接保持一个连接状态机,用以判断连接状态是否良好,如若连接异常,则进行重新连接。
4.如权利要求1或3所述的方法,其特征在于,所述设置远程调用命令,具体包括:
设置远程调用的命令、环境变量以及远程调用命令所在服务器端目录的参数。
5.如权利要求4所述的方法,其特征在于,所述根据远程执行命令ID接收服务器端执行完远程命令后的返回信息,具体为:
根据远程执行命令ID分别接收服务器端执行完远程命令后的返回值、标准输出信息以及标准错误输出信息,将标准输出信息的内容写入本地文件。
6.如权利要求5所述的方法,其特征在于,若接收到的服务器端的返回值为0,则远程执行命令完成,否则远程执行命令失败,标准错误输出信息会记录失败原因。
7.如权利要求1或6所述的方法,其特征在于,当客户端接收到服务器端的返回信息后,还包括:
回收远程命令执行的资源,删除执行队列中该远程执行命令。
8.如权利要求1或3所述的方法,其特征在于,当客户端取消远程调用命令时,包括:
客户端将取消该远程调用命令的指令及对应取消命令ID,转换成字节码密文发送给服务器端;
接收服务器端终止该远程调用的返回值,回收远程调用资源。
9.如权利要求8所述的方法,其特征在于,当客户端取消所有的远程调用命令时,等待服务器端终止所有远程调用的返回值,而后关闭与服务器端的连接,将该连接从连接队列中删除。
10.一种远程命令执行方法,其特征在于,该方法包括:
服务器端利用简单身份验证和安全层SASL认证判断客户端的认证信息是否合法,如是,则返回登录成功响应至客户端;
接收客户端发送的数据,通过解密并将字节码转换成远程执行命令,生成一个远程执行命令ID发送至客户端,并将该远程执行命令ID及其对应远程执行命令放入执行队列;
服务器端执行该远程命令,并读取该远程命令的返回信息,携带远程执行命令ID转换成字节码,密文发送至客户端。
11.如权利要求10所述的方法,其特征在于,所述读取该远程命令的返回信息,具体包括:读取该远程命令返回值、标准输出信息以及标准错误输出信息。
12.如权利要求10或11所述的方法,其特征在于,当服务器端发送给客户端执行远程命令的返回信息之后,还包括:
回收远程执行命令的资源,删除执行队列中该远程执行命令。
13.如权利要求10所述的方法,其特征在于,当服务器端接收客户端发送的数据,通过解密并转换字节码,得到取消远程调用命令及其对应取消命令ID时,包括:
将该取消远程调用命令及其对应取消命令ID放入执行队列;
终止远程执行命令进程,将终止远程调用的返回值,携带命令ID转换成字节码,密文发送至客户端;
回收取消远程执行命令的资源,删除执行队列中该取消远程命令。
14.如权利要求13所述的方法,其特征在于,当服务器端终止所有与该客户端连接的远程执行命令进程时,将终止所有远程调用的返回值发送给客户端,而后关闭与客户端的连接。
15.一种远程命令执行设备,其特征在于,该设备包括:
连接模块,携带简单身份验证和安全层SASL认证信息,通过套接字socket连接服务器端;
保持模块,接收服务器端返回的登录成功响应,登录成功后,客户端保持与所述服务器端连接,并将该连接放入到一个连接队列中;
设置模块,设置远程调用命令,转换成字节流,密文发送给服务器端;
存储模块,接收服务器端返回的远程执行命令ID,将该远程执行命令ID及其对应的远程执行命令放入执行队列;
接收模块,根据该远程执行命令ID接收服务器端执行远程命令后的返回信息。
16.如权利要求15所述的设备,其特征在于,还包括:
长连接模块,用于通过自带心跳,与服务器端保持长连接。
17.如权利要求16所述的设备,其特征在于,还包括:
判断模块,用于与服务器端建立的长连接保持一个连接状态机,判断连接状态是否良好,如若连接异常,则进行重新连接。
18.如权利要求15或17所述的设备,其特征在于,所述设置模块,具体用于设置远程调用的命令、环境变量以及远程调用命令所在服务器端目录的参数。
19.如权利要求18所述的设备,其特征在于,所述接收模块,具体用于根据远程执行命令ID分别接收服务器端执行完远程命令后的返回值、标准输出信息以及标准错误输出信息,将标准输出信息的内容写入本地文件。
20.如权利要求19所述的设备,其特征在于,若所述接收模块接收到的服务器端的返回值为0,则远程执行命令完成,否则远程执行命令失败,标准错误输出信息会记录失败原因。
21.如权利要求15或20所述的设备,其特征在于,还包括:
第一回收删除模块,用于回收远程命令执行的资源,删除执行队列中该远程执行命令。
22.如权利要求15或17所述的设备,其特征在于,所述设置模块,具体用于设置取消远程调用命令时,包括:发送单元,用于将取消该远程调用命令的指令及对应取消命令ID,转换成字节码密文发送给服务器端;
接收回收单元,用于接收服务器端终止远程调用的返回值,回收远程调用资源。
23.如权利要求22所述的设备,其特征在于,所述设置模块,具体用于取消所有的远程调用命令时,等待服务器端终止所有远程调用的返回值,而后关闭与服务器端的连接,将该连接从连接队列中删除。
24.一种远程命令执行设备,其特征在于,该设备包括:
认证模块,用于通过简单身份验证和安全层SASL认证判断客户端的认证信息是否合法,如是,则返回登录成功响应至客户端;
生成模块,用于接收客户端发送的数据,通过解密并将字节码转换成远程执行命令,生成一个远程执行命令ID发送至客户端,并将该远程执行命令ID及其对应远程执行命令放入执行队列;
执行模块,用于执行该远程命令,并读取该远程命令的返回信息,携带远程执行命令ID转换成字节码,密文发送至客户端。
25.如权利要求24所述的设备,其特征在于,所述执行模块,具体用于读取该远程命令返回值、标准输出信息以及标准错误输出信息。
26.如权利要求24或25所述的设备,其特征在于,还包括:
第二回收删除模块,具体用于回收远程执行命令的资源,删除执行队列中该远程执行命令。
27.如权利要求24所述的设备,其特征在于,所述生成模块接收客户端发送的数据,通过解密并转换字节码,得到取消远程调用命令及其对应取消命令ID时,包括:
放置单元,用于将该取消远程调用命令及其对应取消命令ID放入执行队列;
操作单元,用于终止远程执行命令进程,将终止远程调用的返回值,携带命令ID转换成字节码,密文发送至客户端;
回收删除单元,用于回收取消远程执行命令的资源,删除执行队列中该取消远程命令。
28.如权利要求27所述的设备,其特征在于,所述操作单元,具体用于终止所有与该客户端连接的远程执行命令进程时,将终止所有远程调用的返回值发送给客户端,而后关闭与客户端的连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710004788.7A CN106506565B (zh) | 2017-01-04 | 2017-01-04 | 一种远程命令执行方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710004788.7A CN106506565B (zh) | 2017-01-04 | 2017-01-04 | 一种远程命令执行方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106506565A CN106506565A (zh) | 2017-03-15 |
CN106506565B true CN106506565B (zh) | 2020-01-07 |
Family
ID=58345077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710004788.7A Active CN106506565B (zh) | 2017-01-04 | 2017-01-04 | 一种远程命令执行方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106506565B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107071051A (zh) * | 2017-05-16 | 2017-08-18 | 上海上讯信息技术股份有限公司 | 用于命令执行的方法与设备 |
CN108984212B (zh) * | 2017-05-31 | 2021-06-25 | 腾讯科技(深圳)有限公司 | 一种关闭进程的方法以及电子设备 |
CN110378116B (zh) * | 2019-06-06 | 2021-05-25 | 北京奇安信科技有限公司 | 一种阻止基于原生代码攻击操作系统的方法及装置 |
CN113985793A (zh) * | 2021-11-22 | 2022-01-28 | 深圳供电局有限公司 | 一种基于中间层的智能设备远程交互方法及系统 |
CN115314536B (zh) * | 2022-08-03 | 2024-02-02 | 平安付科技服务有限公司 | 远程执行命令方法及装置、存储介质、计算机设备 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7788700B1 (en) * | 2002-05-15 | 2010-08-31 | Gerard A. Gagliano | Enterprise security system |
CN101442515B (zh) * | 2007-11-22 | 2011-09-07 | 深圳市科陆电子科技股份有限公司 | 一种基于浏览器的远程控制方法 |
US20090157835A1 (en) * | 2007-12-12 | 2009-06-18 | Enernoc, Inc. | Presence Enabled Instance Messaging for Distributed Energy Management Solutions |
US8543799B2 (en) * | 2008-05-02 | 2013-09-24 | Microsoft Corporation | Client authentication during network boot |
CN102035904B (zh) * | 2010-12-10 | 2013-04-03 | 北京中科大洋科技发展股份有限公司 | 一种将tcp网络通信服务端转换为客户端的方法 |
CN102215253B (zh) * | 2011-05-18 | 2014-11-19 | 中国电力科学研究院 | 一种电力调度实时监控系统数据的分层交换与控制方法 |
CN104618327B (zh) * | 2014-12-30 | 2018-11-20 | 北京市科学技术情报研究所 | 基于可信操作指令遥控远程自控装置的物联网安全实现方法 |
-
2017
- 2017-01-04 CN CN201710004788.7A patent/CN106506565B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN106506565A (zh) | 2017-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106506565B (zh) | 一种远程命令执行方法及设备 | |
CN109600306B (zh) | 创建会话的方法、装置和存储介质 | |
US7178163B2 (en) | Cross platform network authentication and authorization model | |
US7941831B2 (en) | Dynamic update of authentication information | |
US8347378B2 (en) | Authentication for computer system management | |
CN107124529B (zh) | 图像处理系统、装置、方法以及信息处理装置、方法 | |
CN103975567B (zh) | 双因素认证方法及虚拟机设备 | |
CN110221949A (zh) | 自动化运维管理方法、装置、设备及可读存储介质 | |
CN113821363B (zh) | 一种进程间通讯方法及系统 | |
CN105897692B (zh) | 一种智能终端的app应用账号防盗系统及防盗方法 | |
CN112395242B (zh) | 多芯片控制方法、装置、电子设备和计算机可读存储介质 | |
CN107305608A (zh) | 终端设备的管理方法和装置 | |
CN116170234B (zh) | 一种基于虚拟账号认证的单点登录方法和系统 | |
WO2019071927A1 (zh) | 授权信息获取方法、装置、电子设备及可读存储介质 | |
CN106657135B (zh) | 一种基于安全套接层协议认证的文件传输方法及设备 | |
US20090077243A1 (en) | Conversation recovery method | |
CN103490898B (zh) | 一种电子邮件代收授权方法、装置及系统 | |
CN116018580B (zh) | 用于跨云壳层的实例持久化数据的技术 | |
CN102255872B (zh) | 访问非远程对象的方法和装置 | |
US20040153501A1 (en) | Relay processing apparatus, control method and program therefor, and terminal control server | |
CN109379383B (zh) | 一种虚拟私有网络vpn客户端及实现方法 | |
CN101131641A (zh) | 对系统状态改变作出反应的用户界面管理设备和方法 | |
KR101319570B1 (ko) | 중계장치에 의한 pc와 서버간의 접속 인증 방법, 이를 적용한 중계장치 및 컴퓨터로 읽을 수 있는 기록매체 | |
JP5193010B2 (ja) | 申告データ作成システム、申告データ作成方法、コンピュータ装置、接続管理サーバ、およびデータベースサーバ | |
CN113138862A (zh) | 消息处理方法、服务器、设备、系统及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |