Linux高级运维之Pssh工具使用

我们需要创建一个包含所有目标主机IP地址的文件:pssh -h hosts.txt -l root -A 'ls /tmp'其中-h参数指定了包含目标主机IP地址的文件;

作为一名Linux系统管理员,我们经常需要同时管理多台服务器。在这种情况下,手动登录每个服务器来执行命令是非常低效的。因此,在本文中,我将介绍一个非常强大的工具——Pssh。

Pssh是一款用于批量执行命令的开源工具。它可以让你同时在多台远程主机上执行相同的命令,并且支持并发数控制、超时控制、输出合并等功能。

安装Pssh

在Ubuntu或Debian系统上安装Pssh非常简单:

“`

sudo apt-get install pssh

对于其他Linux发行版,请参考官方文档进行安装。

使用示例

假设我们有三台远程主机:192.168.1.2、192.168.1.3和192.168.1.4,并且我们想要在这三台主机上同时执行ls /tmp命令。

首先,我们需要创建一个包含所有目标主机IP地址的文件:

echo “192.168.1.{2..4}” > hosts.txt

接着,在本地主机上运行以下命令:

pssh -h hosts.txt -l root -A ‘ls /tmp’

其中-h参数指定了包含目标主机IP地址的文件;-l参数指定了登录用户名;-A参数表示从stdin读取密码(如果没有设置公钥认证的话);最后一个参数是要执行的命令。

运行结果如下:

[1] 16:14:45 [SUCCESS] 192.168.1.2: ls /tmp

hsperfdata_root

vmware-root

.keyring-4dkVJU

systemd-private-5b3f4a6c0e2f42a8b7c4eaa46df211ec-systemd-timesyncd.service-GTtPQh

Linux高级运维之Pssh工具使用

systemd-private-5b3f4a6c0e2f42a8b7c4eaa46df211ec-systemd-resolved.service-dKqUnB

pulse-PKdhtXMmr18n

systemd-private-5b3f4a6c0e2f42a8b7c4eaa46df211ec-colord.service-DvGpCt

[2] 16:14:45 [SUCCESS] 192.168.1.3: ls /tmp

[3] 16:14:45 [SUCCESS] 192.168.1.4: ls /tmp

可以看到,Pssh在每个目标主机上并发地执行了ls /tmp命令,并将输出合并在一起。

更多用法

除了简单的批量命令执行外,Pssh还支持很多高级用法。例如:

1、通过-p参数指定并发数:

pssh -h hosts.txt -l root -A -p 10 ‘sleep 30’

这将同时在最多10台主机上运行sleep 30命令。

2、通过-t参数指定超时时间:

pssh -h hosts.txt -l root -A -t 10 ‘ping -c 5 www.baidu.com’

这将在每个主机上运行ping命令,最长等待10秒钟。如果命令没有在10秒内执行完毕,Pssh将终止该命令。

3、通过-o参数指定输出文件:

pssh -h hosts.txt -l root -A -o output.txt ‘uptime’

这将在每个主机上运行uptime命令,并将输出保存到output.txt文件中。

总结

Pssh是一款非常强大的工具,可以帮助我们轻松地批量执行命令。除了本文介绍的用法外,它还支持很多其他高级功能,例如自定义错误处理、使用SSH代理等。

如果你是一名Linux系统管理员或DevOps工程师,那么我强烈建议你学习并掌握Pssh的使用。相信它会成为你日常工作中不可或缺的好帮手。