4个工具,可在多个Linux服务器上同时执行命令

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



1. PSSH-并行SSH


PSSH是用Python编写的开源命令行工具包,旨在在许多Linux系统上并行执行SSH命令。 它工作迅速且易于学习。 PSSH包括诸如parallel-sshparallel-scpparallel-rsyncparallel-slurpparallel-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标志用于指示远程命令模块(可用的远程命令模块包括sshrshexec ;默认情况下使用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的多台服务器上同时执行命令的工具。 如果您正在考虑自动化管理多个服务器的任务,我们希望您在这里找到适合您的内容。

亲爱的读者们! 您是否知道任何有用的实用程序可以简化对大量服务器的管理?

Source: https://habr.com/ru/post/zh-CN426849/


All Articles