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工具使用缩略图 Linux高级运维之Pssh工具使用](https://www.72715.net/wp-content/uploads/2023/05/c2c387f8af7ba71c73747b1378eb367b.png)
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的使用。相信它会成为你日常工作中不可或缺的好帮手。