PSSH - 在多个远程 Linux 系统上运行命令
毫无疑问,OpenSSH 是 Linux 上使用最广泛、功能最强大的工具之一,它允许您通过 shell 安全地连接到远程 Linux 系统,并允许您安全地在远程系统之间传输文件。
但OpenSSH的最大缺点是您无法一次性在多个主机上执行相同的命令,并且OpenSSH并不是为执行此类任务而开发的。
这就是并行 SSH 或 PSSH 工具派上用场的地方,它是一个基于 Python 的应用程序,允许您同时在多个主机上并行执行命令。
PSSH 工具包括 OpenSSH 的并行版本以及相关工具,例如:
- pssh – 是一个在多个远程主机上并行运行 ssh 的程序。
- pscp – 是一个用于将文件并行复制到多个主机的程序。
- prsync – 是一个用于高效地将文件并行复制到多个主机的程序。
- pnuke – 并行终止多个远程主机上的进程。
- pslurp – 将文件从多个远程主机并行复制到中央主机。
这些工具对于需要处理网络上大量节点的系统管理员来说非常有用。
在 Linux 上安装 PSSH 或并行 SSH
在本指南中,我们将了解在基于 RHEL 的发行版(例如 Fedora、CentOS Stream)上安装最新版本 PSSH(即版本 2.3.1)程序的步骤、Rocky & AlmaLinux 和基于 Debian 的发行版,例如使用 pip 命令的 Ubuntu 和 Linux Mint。
pip命令是一个小程序(替代easy_install脚本),用于安装和管理Python软件包索引。
基于 RHEL 的发行版
在 RHEL 发行版上,您需要首先在系统上安装 pip 软件包(即 python-pip)来安装 PSSH 使用 yum 或 dnf 的程序。
yum install python-pip
OR
dnf install python-pip
安装pip工具后,您可以使用pip命令安装pssh软件包,如下所示。
pip install pssh
基于 Debian 的发行版
在基于 Debian 的发行版上,使用 pip 命令安装 pssh 需要一分钟时间。
sudo apt install python-pip
sudo pip install pssh
如何在 Linux 中使用 pssh?
使用 pssh 时,您需要创建一个主机文件,其中包含使用 pssh 连接到远程系统所需的主机数量以及 IP 地址和端口号。
主机文件中的行采用以下形式,还可以包含空行和注释。
192.168.0.10:22
192.168.0.11:22
在多个 Linux 服务器上运行单个命令
您可以通过运行 pssh 命令在网络上的不同或多台 Linux 主机上执行任何单个命令。有许多选项可与 pssh 一起使用,如下所述:
我们将研究使用 pssh 和不同选项在多个主机上执行命令的几种方法。
- 要读取主机文件,请包含
-h host_file_name
或--hosts host_file_name
选项。 - 要在未定义特定用户的所有主机上包含默认用户名,请使用
-l
用户名或--user username
选项。 - 您还可以在每个主机完成时显示标准输出和标准错误。通过使用
-i
或--inline
选项。 - 您可能希望通过包含
-t number_of_seconds
选项使连接在给定秒数后超时。 - 要将标准输出保存到给定目录,可以使用 -o /directory/path 选项。
- 要请求密码并将其发送到 SSH,请使用
-A
选项。
让我们看一下 pssh 命令的一些示例和用法:
在多个 Linux 主机上运行命令
1. 要通过 root 用户在多个 Linux 主机的终端上执行 echo “Hello TecMint ” 并提示输入 root 用户的密码,请运行以下命令。
重要:记住所有主机必须包含在主机文件中。
pssh -h pssh-hosts -l root -A echo "Hello TecMint"
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[1] 15:54:55 [SUCCESS] 192.168.0.10:22
[2] 15:54:56 [SUCCESS] 192.168.0.11:22
注意:在上面的命令中,“pssh-hosts”是一个包含远程 Linux 服务器的 IP 地址和 SSH 端口号列表的文件您希望执行命令。
查找多个 Linux 主机的磁盘使用情况
2. 要了解网络上多个 Linux 服务器上的磁盘空间使用情况,您可以运行单个命令,如下所示。
pssh -h pssh-hosts -l root -A -i "df -hT"
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[1] 16:04:18 [SUCCESS] 192.168.0.10:22
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda3 ext4 38G 4.3G 32G 12% /
tmpfs tmpfs 499M 0 499M 0% /dev/shm
/dev/sda1 ext4 190M 25M 156M 14% /boot
[2] 16:04:18 [SUCCESS] 192.168.0.11:22
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 30G 9.8G 20G 34% /
devtmpfs devtmpfs 488M 0 488M 0% /dev
tmpfs tmpfs 497M 148K 497M 1% /dev/shm
tmpfs tmpfs 497M 7.0M 490M 2% /run
tmpfs tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/sda1 xfs 497M 166M 332M 34% /boot
查找多个 Linux 主机的正常运行时间
3.如果您想一次性了解多台Linux服务器的正常运行时间,那么您可以运行以下命令。
pssh -h pssh-hosts -l root -A -i "uptime"
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[1] 16:09:03 [SUCCESS] 192.168.0.10:22
16:09:01 up 1:00, 2 users, load average: 0.07, 0.02, 0.00
[2] 16:09:03 [SUCCESS] 192.168.0.11:22
06:39:03 up 1:00, 2 users, load average: 0.00, 0.06, 0.09
您可以查看pssh命令的手动输入页面来获取许多其他选项,以了解更多使用pssh的方法。
pssh --help
概括
并行 SSH 或 PSSH 是一个很好的工具,可用于在系统管理员必须与网络上的许多服务器一起工作的环境中执行命令。它将使命令可以轻松地在网络上的不同主机上远程执行。
希望您发现本指南有用,如果有任何有关 pssh 的其他信息或在安装或使用它时出现错误,请随时发表评论。