Linux主机的批量命令运行方法和装置的制造方法
【技术领域】
[0001]本发明实施例涉及网络通信技术领域,尤其涉及一种Linux主机的批量命令运行方法和装置。
【背景技术】
[0002]与其他系统的系统管理工作相同,对Linux主机进行系统管理时,一项经常性的工作就是通过远程连接对主机进行管理。为了确保主机的安全运行,必须为这种远程连接提供安全保证。传统的远程连接和管理主机的工具很多,主要有:Telnet、FTP等。但是,这些传统的工具的数据传输大都是明文传输,安全性没有保证。相对于这些传统工具,安全壳(Secure shell,SSH)的安全性有极大的提升。SSH协议是一种在两个主机之间通过加密和身份验证机制提供安全连接的协议。通过SSH协议,系统管理员能够通过加密连接远程登录到主机上,对主机进行各种管理操作,十分方便。
[0003]但是,这种便捷性仅限于对一台主机进行远程操作。一旦需要进行远程管理操作的主机的数目超过两台,上述的远程操作过程会变得非常繁琐。系统管理员需要分别通过SSH协议登录不同的主机,在各个主机上分别运行相应的命令,以完成对不同主机的管理,尽管在各个主机上运行的命令完全相同。
【发明内容】
[0004]针对上述技术问题,本发明实施例提供了一种Linux主机的批量命令运行方法和装置,以实现对用户输入命令在不同主机上的批量运行。
[0005]第一方面,本发明实施例提供了一种Linux主机的批量命令运行方法,所述方法包括:
[0006]创建与预存的连接信息数量相等的命令运行线程,其中,所述命令运行线程均是存储在线程池中的命令运行线程;
[0007]根据所述连接信息,由所述命令运行线程分别获取与其对应的目标主机之间的网络连接;
[0008]根据所述网络连接,由所述命令运行线程分别获取与所述目标主机之间的会话,并启动所述会话;
[0009]用户输入命令后,利用所述会话,由所述命令运行线程在所述目标主机上分别执行用户输入的命令;
[0010]由所述命令运行线程分别获取所述目标主机上执行命令的反馈信息,并显示所述反馈信息。
[0011]第二方面,本发明实施例还提供了一种Linux主机的批量命令装置,所述装置包括:
[0012]线程创建模块,用于创建与预存的连接信息数量相等的命令运行线程,其中,所述命令运行线程均是存储在线程池中的命令运行线程;
[0013]连接获取模块,用于根据所述连接信息,由所述命令运行线程分别获取与其对应的目标主机之间的网络连接;
[0014]会话启动模块,用于根据所述网络连接,由所述命令运行线程分别获取与所述目标主机之间的会话,并启动所述会话;
[0015]批量执行模块,用于用户输入命令后,利用所述会话,由所述命令运行线程在所述目标主机上分别执行用户输入的命令;
[0016]反馈模块,用于由所述命令运行线程分别获取所述目标主机上执行命令的反馈信息,并显示所述反馈信息。
[0017]本发明实施例提供的Linux主机的批量命令运行方法和装置,通过创建与预存的连接信息数量相等的命令运行线程,根据所述连接信息,由所述命令运行线程分别获取与其对应的目标主机之间的网络连接,根据所述网络连接,由所述命令运行线程分别获取与所述目标主机之间的会话,并启动所述会话,用户输入命令后,利用所述会话,由所述命令运行线程在所述目标主机上分别执行用户输入的命令,由所述命令运行线程分别获取所述目标主机上执行命令的反馈信息,并显示所述反馈信息,实现了对用户输入命令在不同主机上的批量运行。
【附图说明】
[0018]通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
[0019]图1是本发明第一实施例提供的Linux主机的批量命令运行方法的流程图;
[0020]图2是本发明第一实施例提供的批量命令运行之前控制终端的显示界面图;
[0021 ]图3是本发明第一实施例提供的批量命令运行之后控制终端的显示界面图;
[0022]图4是本发明第二实施例提供的Linux主机的批量命令运行装置的结构图。
【具体实施方式】
[0023]下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
[0024]第一实施例
[0025]本实施例提供了Linux主机的批量命令运行方法的一种技术方案。所述Linux主机的批量命令运行方法由Linux主机的批量命令运行装置执行。并且,所述Linux主机的批量命令运行装置集成在用户输入批量命令的终端计算设备中。所述终端计算设备优选是瘦客户机。
[0026]参见图1,所述Linux主机的批量命令运行方法包括:
[0027]Sll,创建与预存的连接信息数量相等的命令运行线程,其中,所述命令运行线程均是存储在线程池中的命令运行线程。
[0028]在本实施例中,在执行命令的批量运行之前,在所述终端计算设备本地预存有需要与之建立连接的主机的连接信息。所述连接信息包括目标主机的IP地址、用户名及密码。并且,所述连接信息以XML文件的形式存储。利用所述XML文件中存储的连接信息,所述终端计算设备能够建立起与所述目的主机之间的网络连接。
[0029]下面给出所述XML文件中存储的连接信息的示例:
[0030]〈host ip = "192.168.113.57 " use rname = "${username}" password ={password}〃>〈/host>
[0031]参见上文列出的代码,对于每个主机host,所述XML文件中记录了包括它的IP地址、用户名和密码的完整的连接信息。利用上述连接信息,用户可以建立起与主机之间可靠的网络连接。而且,所述XML文件可以采用通用配置的参数值,在需要应用通用配置的参数时,使用符号$引用。
[0032]需要说明的是,所述目标主机是预装有Linux操作系统的主机。这些目标主机可以是预装Redhat Linux、Ubuntu等完整Linux操作系统的大型服务器、个人电脑、工作站等,也可以是安装了经过精简的嵌入式Linux操作系统的各种嵌入式计算设备。
[0033]在不同的主机上批量运行用户输入的命令之前,需要首先对所述XML文件中预存的每一条连接信息创建一个命令运行线程。所述命令运行线程是都是针对所述XML文件中一条具体的连接信息而创建的。也就是说,每个命令运行线程都与将要在其上运行用户输入的命令的一台主机相对应。因此,仓Il建的命令运行线程的数量与所述XML文件中包含的连接信息的数量相等,也等于需要在其上运行命令的主机的数量。
[0034]并且,所有创建的命令运行线程都是线程池中的命令运行线程。换言之,在本实施例中,使用线程池技术实现对不同命令运行线程的管理。
[0035]更为具体的,所述线程池是基于工作组模型的动态线程池。这意味着,在所述线程池中的所有线程,它们相互之间的地位是平等的,并不会出现一部分线程需要对另外一部分线程进行管理的情况。而且,线程池中活跃线程的数量是动态变化的,可以根据用户的输入命令终止一些线程,也可以根据用户的输入命令创建并启动一部分线程。
[0036]S12,根据所述连接信息,由所述命令运行线程分别获取与其对应的目标主机之间的网络连接。
[0037]在所述线程池中创建了命令运行线程之后,根据所述连接信息分别获取与所述命令运行线程对应的目标主机的网络连接。并且,网络连接的获取应该有对应的命令线程执行。
[0038]具体的,获取与目标主机之间的网络连接就是实例化一个连接(Connect1n)对象。在这个连接对象的示例化过程中,需要使用从所述XML文件中读取的诸如主机IP地址、用户名、密码的连接信息。
[0039]而且,获取到的与所述目标主机之间的网络连接是基于安全壳(Secureshell,SSH)协议的网络连接。
[0040]需要注意的是,对不同的主机对应的网络连接的获取是由不同的命令运行线程并行执行而实现的。
[0041]S13,根据所述网络连接,由所述命令运行线程分别获取与所述目标主机之间的会话,并启动所述会话。
[0042]在获取了与目标主机之间的网络连接之后,所述命令运行线程继续