毫无疑问,OpenSSH是Linux上使用最广泛、功能最强大的工具之一,它允许用户通过Shell安全地连接到远程Linux系统,并允许用户安全地在远程系统之间传输文件。
但是,OpenSSH的最大缺点是你无法一次性在多个主机上执行相同的命令,并且OpenSSH并不是为执行此类任务而开发的。所以,这就是PSSH(并行SSH)工具派上用场的地方,它是一个基于Python的应用程序,允许用户同时在多个主机上并行执行命令。
PSSH工具包括OpenSSH的并行版本和相关工具,主要包括以下几个方面:
- pssh:一个在多个远程主机上并行运行ssh的程序。
- pscp:一个用于将文件并行复制到多个主机的程序。
- prsync:一个用于高效地将文件并行复制到多个主机的程序。
- pnuke:并行终止多个远程主机上的进程。
- pslurp:将文件从多个远程主机并行复制到中央主机。
以上这些PSSH工具对于需要处理网络上大量节点的系统管理员来说非常有用。
在Linux上安装PSSH
这里主要介绍使用pip命令在基于RHEL的发行版(例如Fedora、CentOS Stream、Rocky和AlmaLinux)以及基于Debian的发行版(例如Ubuntu和Linux Mint)上安装最新版本的PSSH(即版本2.3.1 )的简单步骤。
pip命令是一个小程序(替换easy_install脚本),用于安装和管理Python软件包索引。
基于RHEL的发行版
在RHEL发行版上,需要首先在系统上安装pip软件包(即python-pip ),以使用yum或dnf安装PSSH程序:
yum install python-pip 或者 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
另外,可以通过运行pssh命令在网络上的不同或多台Linux主机上执行任何单个命令。目前有许多选项可与pssh一起使用,具体如下所述:
- 要读取主机文件,请包含
-h host_file-name
或--hosts host_file_name
选项。 - 要在未定义特定用户的所有主机上包含默认用户名,请使用
-l
username 或--user username
选项。 - 还可以在每个主机完成时显示标准输出和标准错误,通过使用
-i
或--inline
选项即可。 - 可以通过包含
-t number_of_seconds
选项来使连接在给定秒数后超时。 - 要将标准输出保存到给定目录,可以使用
-o /directory/path
选项。 - 要请求密码并将其发送到SSH,请使用
-A
选项。
接下来让我们看一些pssh命令的示例和用法:
在多个Linux主机上运行命令
要通过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主机的磁盘使用情况
要了解网络上多个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主机的正常运行时间
如果你想一次性了解多台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
总结
PSSH是一个很好的工具,可用于在系统管理员必须与网络上的许多服务器一起工作的环境中执行命令,它将使命令可以轻松地在网络上的不同主机上远程执行。
希望本文关于PSSH命令的介绍能够对大家有所帮助,如果有任何有关PSSH的其它信息或在安装或使用它时出现错误,也可以查看帮助页面。