网站搜索

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


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

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

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

1.PSSH——并行SSH

Parallel-SSH 是一个开源、快速且易于使用的基于 Python 命令行的工具包,用于在多个 Linux 系统上并行执行 ssh。它包含许多用于各种目的的工具,例如parallel-ssh、parallel-scp、parallel-rsyncparallel-slurp >parallel-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
192.168.0.10:22
192.168.0.11:22
192.168.0.12:22

保存文件并关闭它。

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

parallel-ssh -h hosts "uptime; df -h"

您还应该查看:如何在多个 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+

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

记下主机文件之前的 ^

pdsh -w ^hosts -R ssh "uptime; df -h"

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

man pdsh 

3.集群SSH

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 username@server1 username@server2 username@server3 

有关更多信息,请参阅 clustersh 手册页:

man clusterssh

4. 安塞布尔

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

按组指定它们,例如网络服务器

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

保存文件并关闭它。

现在要检查正常运行时间以及连接到webserver组中指定的所有服务器的用户,在上面的主机配置文件中,只需运行ansible命令行工具,如下所示。

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

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

ansible webservers -a "w " -u admin

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