如何一次在多个远程系统上运行单个命令
我们将在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,我们可以在生产中使用它,如果我们愿意。