如何一次在多个远程系统上运行单个命令

时间:2020-03-21 11:46:56  来源:igfitidea点击:

我们将在Unix的操作系统中看到如何在多个远程系统上运行单个命令。
如我们所知,我们可以使用SSH与远程系统访问和通信。
OpenSSH允许我们在远程系统中进行各种管理任务。
使用OpenSSH的一个限制是我们无法立即在多个远程系统上运行单个命令。

pssh或者parallel ssh是一个命令行套件,可在多个主机上并行ssh。
PSSH套件包括以下命令:

  • PSSH - SSH并行给多个远程系统,
  • pscp - 并行复制到多个主机的文件,
  • Prsync:将文件并行复制到多个主机,
  • Pnuke:在许多主机上并行杀死进程,
  • PSLURP:从多个主机中并行复制文件。

在本教程中,我们将在使用PSSH时看到如何在多个主机上执行单个命令。

安装pssh.

我们可以使用pip,python包管理器轻松安装pssh。

要在Arch Linux及其衍生产品上安装PIP,请运行:

$sudo pacman -S python-pip

在Rhel,Fedora,Centos:

$sudo yum install epel-release
$sudo yum install python-pip

或者,

$sudo dnf install epel-release
$sudo dnf install python-pip

在Debian,Ubuntu,Linux Mint:

$sudo apt-get install python-pip

有关使用PIP管理Python Packages的更多详细信息,请参阅以下链接。

  • 如何使用pip管理python包

安装后,运行以下命令以安装pssh。

$sudo pip install pssh

PSSH已安装!让我们继续看看如何使用它。

使用PSSH立即在多个远程系统上运行单个命令

重要提示:为了使用PSSH(仅为本教程的目的),所有远程系统都必须具有相同密码的常见用户名。
否则,此方法无济于事。
例如,我已经在所有我的远程主机上创建了一个名为sk的用户,密码onitread。
我们也应该在所有远程系统上具有相同密码的用户。

现在,让我们了解如何使用PSSH在多个远程主机上运行单个命令。
转到本地系统,我们希望运行命令并创建名为Remotehosts.txt的文本文件。
我们可以根据意愿命名它。

$vi remotehosts.txt

以下图恰好显示,将远程主机的IP地址与端口号一起添加一个端口号。

192.168.1.103:22
192.168.1.104:22

其中,192,168.1.103和192.168.1.104是我远程系统的IP地址。
22是SSH端口号。
如果我们已经更改了,我们需要提及正确的端口号。
此外,请确保我们可以通过SSH从本地系统中访问所有远程主机。

现在,让我们从我们本地系统检查两个远程主机的正常运行时间。
为此,运行:

$pssh -h remotehosts.txt -l sk -A -i "uptime"

其中

  • Remotehosts.txt - 包含两个远程系统的IP地址。
  • SK - 两个远程系统的用户名

输入用户"sk"的密码。

示例输出:

Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: 
[1] 20:51:15 [SUCCESS] 192.168.1.103:22
 20:50:50 up 8 min, 1 user, load average: 0.05, 0.11, 0.10
[2] 20:51:15 [SUCCESS] 192.168.1.104:22
 20:50:52 up 12 min, 1 user, load average: 0.00, 0.07, 0.12

如上所述,我们在两个远程主机上运行"正常运行时间"命令,并在一个远程中获取结果。

内核版本怎么样?
要检查两个远程主机的已安装版本,请运行:

$pssh -h remotehosts.txt -l sk -A -i "uname -r"

示例输出:

Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: 
[1] 20:53:09 [SUCCESS] 192.168.1.103:22
3.10.0-327.22.2.el7.x86_64
[2] 20:53:09 [SUCCESS] 192.168.1.104:22
4.4.0-21-generic

很酷,不是吗?
我们可以立即在两个远程主机上创建一个目录吗?
是的当然!为此,请运行以下命令:

$pssh -h remotehosts.txt -l sk -A -i "mkdir dir1"

同样,我们可以使用PSSH从本地系统的多个远程主机上执行任何操作。

重要提示:使用PSSH时请非常小心。
一个坏命令将在多个主机上同时执行并损坏所有主机。
所以,在生产这种方法时非常小心。
我建议我们在虚拟机中测试这一点。
一旦我们熟悉PSSH,我们可以在生产中使用它,如果我们愿意。