网站搜索

PSSH - 在多个远程 Linux 系统上运行命令


毫无疑问,OpenSSH 是 Linux 上使用最广泛、功能最强大的工具之一,它允许您通过 shell 安全地连接到远程 Linux 系统,并允许您安全地在远程系统之间传输文件。

OpenSSH的最大缺点是您无法一次性在多个主机上执行相同的命令,并且OpenSSH并不是为执行此类任务而开发的。

这就是并行 SSHPSSH 工具派上用场的地方,它是一个基于 Python 的应用程序,允许您同时在多个主机上并行执行命令。

PSSH 工具包括 OpenSSH 的并行版本以及相关工具,例如:

  • pssh – 是一个在多个远程主机上并行运行 ssh 的程序。
  • pscp – 是一个用于将文件并行复制到多个主机的程序。
  • prsync – 是一个用于高效地将文件并行复制到多个主机的程序。
  • pnuke – 并行终止多个远程主机上的进程。
  • pslurp – 将文件从多个远程主机并行复制到中央主机。

这些工具对于需要处理网络上大量节点的系统管理员来说非常有用。

在 Linux 上安装 PSSH 或并行 SSH

在本指南中,我们将了解在基于 RHEL 的发行版(例如 Fedora、CentOS Stream)上安装最新版本 PSSH(即版本 2.3.1)程序的步骤、Rocky & AlmaLinux 和基于 Debian 的发行版,例如使用 pip 命令的 UbuntuLinux 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

概括

并行 SSHPSSH 是一个很好的工具,可用于在系统管理员必须与网络上的许多服务器一起工作的环境中执行命令。它将使命令可以轻松地在网络上的不同主机上远程执行。

希望您发现本指南有用,如果有任何有关 pssh 的其他信息或在安装或使用它时出现错误,请随时发表评论。