4个在多个Linux服务器上运行命令的有用工具

在本文中,我们将解释4个有用的工具,可以同时在多个远程Linux服务器上运行或执行重复的Linux命令系列。

在本文中,我们将展示如何在多个Linux服务器上同时运行命令。 我们将解释如何使用一些众所周知的工具,这些工具旨在同时在多个服务器上执行重复的一系列命令。 本指南对于通常每天必须检查多个Linux服务器的运行状况的系统管理员非常有用。

出于本文的目的,我们假设您已经有SSH设置来访问所有服务器,其次,当同时访问多个服务器时,在所有Linux服务器上设置基于密钥的无密码SSH是合适的。 这首先增强了服务器的安全性,并且易于访问。

另请参阅如何配置自定义SSH连接以简化远程访问

1. PSSH - 并行SSH

Parallel-SSH是一个开源,快速且易于使用的基于命令行的Python工具包,用于在许多Linux系统上并行执行ssh。 它包含许多用于各种目的的工具,例如parallel-sshparallel-scpparallel-rsyncparallel-slurpparallel-nuke (有关更多信息,请阅读特定工具的手册页)。

要安装parallel-ssh ,您需要先在Linux系统上安装PIP

$ sudo apt install python-pip python-setuptools 	#Debian/Ubuntu 
# yum install python-pip python-setuptools	        #RHEL/CentOS 
# dnf install python-pip python-setuptools	        #Fedora 22+

然后使用pip安装parallel-ssh ,如下所示。

$ sudo pip install parallel-ssh

接下来,在名为hosts的文件中输入具有SSH端口的远程Linux服务器的主机名或IP地址(您可以将其命名为任何名称):

$ vim hosts
pssh主机文件
192.168.0.10:22
192.168.0.11:22
192.168.0.12:22

保存文件并关闭它。

现在运行parallel-ssh ,使用-h选项指定hosts文件,并在所有指定的服务器上执行命令。 -i标志表示在每个服务器上执行命令完成后显示std输出std错误

$ parallel-ssh -h hosts "uptime; df -h"
Pssh在多个Linux服务器上运行命令

Pssh在多个Linux服务器上运行命令

您还应该查看: 如何在多个Linux服务器上运行多个命令

2. Pdsh - 并行远程Shell实用程序

Pdsh是一个开源的,简单的并行远程shell工具,用于同时在多个Linux服务器上执行命令。 它使用线程的滑动窗口来执行远程命令。

要在Linux计算机上安装Pdsh ,请运行以下相应的命令。

$ sudo apt install pdsh 	#Debian/Ubuntu 
# yum install pdsh	        #RHEL/CentOS 
# dnf install pdsh              #Fedora 22+

要在多个服务器上运行命令,请将服务器添加到hosts文件,如前所述。 然后运行pdsh ,如图所示; 标志-w用于指定hosts文件, -R用于指定远程命令模块(可用的远程命令模块包括ssh,rsh,exec,默认为rsh)。

记下hosts文件之前的^

$ pdsh -w ^hosts -R ssh "uptime; df -h"
pdsh  - 在多个Linux服务器中执行命令

pdsh - 在多个Linux服务器中执行命令

如果您没有在命令行上指定要执行的远程命令,如上所示, pdsh将以交互方式运行,提示您输入命令并在使用回车符终止时运行命令。 有关更多信息,请参见pdsh手册页:

$ man pdsh 

3. ClusterSSH

ClusterSSH是一个命令行工具,用于同时管理多个服务器的集群。 它为所有指定的服务器启动管理控制台和xterm ,使您可以对所有服务器运行相同的命令。

要使用clusterssh ,请首先将其安装在本地Linux计算机上,如图所示。

$ sudo apt install clusterssh    #Debian/Ubuntu 
# yum install clusterssh         #RHEL/CentOS 
$ sudo dnf install clusterssh    #Fedora 22+

现在您已经安装了它,立即在远程服务器上打开管理控制台和xterm ,如下所示。 要在所有服务器上运行命令,请单击xterm输入栏,然后键入命令; 要管理单个主机,请使用其管理控制台。

$ clusterssh linode cserver contabo
OR
$ clusterssh [email protected] [email protected] [email protected] 
Clusterssh  - 管理多个SSH会话

Clusterssh - 管理多个SSH会话

有关更多信息,请参见clusterssh手册页:

$ man clusterssh

4. Ansible

Ansible是一个自动化IT流程的开源和流行工具。 它用于配置和管理系统,部署应用程序等等。

要在Linux系统上安装Ansible ,请运行以下相应的命令:

$ sudo apt install ansible       #Debian/Ubuntu 
# yum install ansible            #RHEL/CentOS 
$ sudo dnf install ansible       #Fedora 22+

安装ansible后 ,可以在/ etc / anasible / hosts文件中添加服务器的主机名或IP地址。

$ sudo vim /etc/anasible/hosts

在组中指定它们,例如Web服务器

# Ex 2: A collection of hosts belonging to the 'webservers' group
[webservers]
139.10.100.147
139.20.40.90
192.30.152.186

保存文件并关闭它。

现在,要检查连接到组web服务器中指定的所有服务器的正常运行时间和用户,请在上面的hosts配置文件中,运行ansible命令行工具,如下所示。

-a选项用于指定传递给模块的参数, -u标志指定通过SSH连接到远程服务器的默认用户名

请注意,ansible CLI工具仅允许您最多只执行一个命令。

$ ansible webservers -a "w " -u admin
Ansible  - 在多个Linux服务器上运行命令

Ansible - 在多个Linux服务器上运行命令

就这样! 在本文中,我们已经解释了如何使用广泛使用的工具同时在多个远程Linux服务器上运行命令。 如果您知道有任何相同目的的工具,我们未在本文中包含这些工具,请通过下面的评论表告知我们。