OpenSSH是Linux中最广泛使用且功能强大的工具之一,它允许你通过shell安全地连接到远程Linux系统,并且可以安全地传输文件。
但是,OpenSSH的一个最大缺点是它无法一次性在多个主机上执行相同的命令,且OpenSSH并未开发用于执行此类任务。
这时,Parallel SSH(简称 PSSH)工具就派上用场了。PSSH是一个基于Python的应用程序,允许你同时在多个主机上并行执行命令。
PSSH 工具包含了 OpenSSH 和相关工具的并行版本,具体包括:
pssh:用于在多个远程主机上并行运行 ssh。
pscp:用于并行将文件复制到多个主机。
prsync:用于高效地将文件并行复制到多个主机。
pnuke:并行结束多个远程主机上的进程。
pslurp:并行从多个远程主机复制文件到中央主机。
这些工具对于需要管理大量节点的系统管理员尤其有用。
在Linux上安装 PSSH 或 Parallel SSH
在本指南中,我们将介绍如何在 RHEL 系列发行版(如 Fedora、CentOS Stream、Rocky、AlmaLinux)和 Debian 系列发行版(如 Ubuntu、Linux Mint)上使用 `pip` 命令安装最新版的 PSSH(即 2.3.1 版本)。
`pip` 是一个小型程序,用于安装和管理 Python 软件包。
在 RHEL 系列发行版上安装
在 RHEL 系统上,首先需要安装 `pip` 包(即 `python-pip`),然后使用 `yum` 或 `dnf` 命令安装 PSSH 工具。
yum install python-pip
# 或
dnf install python-pip
安装完 `pip` 工具后,使用以下命令安装 PSSH 包:
pip install pssh
在 Debian 系列发行版上安装
在 Debian 系列发行版上,使用 `pip` 命令安装 PSSH 非常简单。
sudo apt install python-pip
sudo pip install pssh
如何在 Linux 中使用 pssh?
使用 PSSH 时,你需要创建一个包含主机名、IP 地址和端口号的主机文件。该文件中的每一行包含一个主机的地址,文件格式如下(可以包含空行和注释):
pssh 主机文件
192.168.0.10:22
192.168.0.11:22
在多个 Linux 服务器上执行单一命令
你可以通过运行 PSSH 命令,在多个 Linux 主机上同时执行同一个命令。以下是一些常用选项:
– 使用 `-h host_file_name` 或 `–hosts host_file_name` 选项来指定主机文件。
– 使用 `-l username` 或 `–user username` 选项来为所有未指定特定用户的主机设置默认用户名。
– 使用 `-i` 或 `–inline` 选项,显示每个主机执行命令后的标准输出和标准错误。
– 使用 `-t number_of_seconds` 选项来设置连接超时时间。
– 使用 `-o /directory/path` 选项来将标准输出保存到指定目录。
– 使用 `-A` 选项提示输入密码并将其传递给 SSH。
接下来,我们来看看一些常见的 PSSH 命令示例:
在多个 Linux 主机上执行命令
1. 要在多个 Linux 主机的终端上执行 `echo “Hello A5idc.com”` 命令,并要求输入 root 用户的密码,可以运行以下命令:
pssh -h pssh-hosts -l root -A echo “Hello A5idc.com”
注意:记住,所有主机都必须包含在主机文件中。
警告:如果其他人拥有超级用户权限或可以访问你的账户,请勿输入密码。
输出示例:
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”
警告:如果其他人拥有超级用户权限或可以访问你的账户,请勿输入密码。
输出示例:
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"
警告:如果其他人拥有超级用户权限或可以访问你的账户,请勿输入密码。
输出示例:
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

Parallel SSH(PSSH)是一个非常有用的工具,特别适合系统管理员在网络中管理多个服务器时使用。它使得在多个主机上远程执行命令变得更加简便高效。
希望本指南对你有所帮助,如果在安装或使用 PSSH 时遇到任何问题或需要更多信息,欢迎在下方留言。











