这篇文章(我们今天将要翻译的译本)致力于在多个Linux服务器上同时执行命令的技术。 在这里,我们将讨论几种实现此类功能的知名工具。 该材料对系统管理员很有用,例如,他们必须定期检查许多远程系统的状态。 假定读取器已经有多个服务器进行SSH访问。 此外,在同时使用多台计算机时,
通过密钥(不使用密码)配置对它们
的 SSH访问非常有用。 一方面,这种方法提高了服务器的安全性,另一方面,使得使用起来更容易。

1. PSSH-并行SSH
PSSH是用Python编写的开源命令行工具包,旨在在许多Linux系统上并行执行SSH命令。 它工作迅速且易于学习。 PSSH包括诸如
parallel-ssh
,
parallel-scp ,
parallel-rsync
,
parallel-slurp
和
parallel-nuke
工具(有关这些工具的详细信息,请参见man)。
在Linux系统上安装
parallel-ssh
之前,必须首先安装
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
中输入远程Linux服务器的主机名或IP地址以及端口信息(实际上,您可以使用任何名称)。 这里我们需要这个命令:
$ vim hosts
这是此类文件内容的示例:
192.168.0.10:22 192.168.0.11:22 192.168.0.12:22
将所有必需的内容输入到文件中之后,就可以运行
parallel-ssh
,使用
-h
选项向该实用程序传递文件名,以及需要在地址位于
hosts
中的所有服务器上运行的命令。 该实用程序的
-i
标志用于显示在服务器上完成命令后进入标准输出和错误流的内容。
parallel-ssh
启动命令可能如下所示:
$ parallel-ssh -h hosts "uptime; df -h"
下图显示了使用三台服务器时该实用程序的用法。
parallel-ssh实用程序在多个服务器上执行命令2. Pdsh-并行远程Shell实用程序
同样,Pdsh是一个开放源代码解决方案,它是一个可在多个Linux服务器上同时执行命令的外壳。
以下是在各种发行版上安装
pdsh
:
$ sudo apt install pdsh #Debian/Ubuntu # yum install pdsh #RHEL/CentOS # dnf install pdsh #Fedora 22+
为了在多台服务器上执行命令,必须将这些服务器的地址(与
parallel-ssh
添加到文件中,该文件也可以称为
hosts
。 然后,您需要以以下形式运行
pdsh
:
$ pdsh -w ^hosts -R ssh "uptime; df -h"
在这里,
-w
标志用于指示带有服务器列表的文件,
-R
标志用于指示远程命令模块(可用的远程命令模块包括
ssh
,
rsh
,
exec
;默认情况下使用
rsh
)。 请注意服务器列表文件名前面的
^
图标。
这是与该团队合作的样子。
使用pdsh在多台服务器上运行命令如果在调用
pdsh
时未指定需要在服务器上执行的命令列表,则该实用程序将以交互方式启动。 有关
pdsh
详细信息可以在相应的手册页上找到。
3. ClusterSSH
ClusterSSH是用于管理服务器群集的命令行工具。 它启动管理控制台,并为每个服务器启动一个单独的
xterm
窗口。 此后,所有这些服务器都可以同时运行相同的命令。
安装
clusterssh
:
$ sudo apt install clusterssh #Debian/Ubuntu # yum install clusterssh #RHEL/CentOS $ sudo dnf install clusterssh #Fedora 22+
现在,要连接到服务器,您需要运行以下格式的命令:
$ clusterssh linode cserver contabo
您可以使用以下设计:
$ clusterssh username@server1 username@server2 username@server3
之后,您将看到类似于下图所示的内容。
使用clusterssh处理多台服务器在管理员控制台中输入的命令将在所有服务器上执行。 要在单独的服务器上执行命令,您需要在打开的窗口中输入命令。
4. Ansible
Ansible是一种流行的开源工具,用于自动化IT流程。 它用于配置和管理系统,安装应用程序以及解决其他问题。
安装
ansible
:
$ sudo apt install ansible #Debian/Ubuntu # yum install ansible #RHEL/CentOS $ sudo dnf install ansible #Fedora 22+
之后,将服务器的地址添加到文件
/etc/ansible/hosts
。
$ sudo vim /etc/ansible/hosts
这是一个类似文件的片段示例,其中几个系统合并在
webservers
组中:
# Ex 2: A collection of hosts belonging to the 'webservers' group [webservers] 139.10.100.147 139.20.40.90 192.30.152.186
现在,为了获取
uptime
命令信息并找出哪些用户连接到了
webservers
组中包含的主机,可以使用以下结构:
$ ansible webservers -a "w " -u admin
在这里,
-a
选项用于指定传递给模块的参数,
-u
标志允许您指定用于通过SSH连接到远程服务器的默认用户名。
请注意,
ansible
命令行
ansible
仅允许
ansible
一次仅执行一个命令。
使用Ansible工具与多台服务器进行交互总结
在本文中,我们讨论了旨在在运行Linux的多台服务器上同时执行命令的工具。 如果您正在考虑自动化管理多个服务器的任务,我们希望您在这里找到适合您的内容。
亲爱的读者们! 您是否知道任何有用的实用程序可以简化对大量服务器的管理?