pussh:并行SSH,批处理与命令行工具
pussh Parallel SSH, batch and command line oriented 项目地址: https://gitcode.com/gh_mirrors/pus/pussh
pussh
在自动化运维领域, pussh 无疑是一款强大的并行SSH工具。它以批处理和命令行为核心,为系统管理员提供了极大便利。
项目介绍
pussh 是一个简单的并行SSH客户端,能够同时对多个主机执行命令。其输出结果会以主机名作为前缀,方便用户识别各主机返回的信息。pussh 支持从文件或标准输入读取主机列表,使得批量操作变得异常简便。
项目技术分析
pussh 的基本命令输出以主机名为前缀,如下所示:
$ pussh -h host1,host2bis,... uname -a
host1 : Linux host1 3.2.0-4-amd64 #1 SMP Debian 3.2.41-2 x86_64 GNU/Linux
host2bis: Linux host2 3.2.0-3-kirkwood #1 Mon Jul 23 22:36:47 UTC 2012 armv5tel GNU/Linux
...
pussh 也支持从文件读取主机列表或通过管道接收数据:
$ pussh -f servers uname -a
$ fetch-servers | pussh -f - uname -a
pussh 还可以与其他命令结合使用,例如按根文件系统使用率排序服务器:
$ pussh -f servers df -h / |grep /dev |sort -rn -k5
或者收集每台主机的硬件信息:
$ pussh -f servers -o %h-hw.txt lshw
pussh 还支持将每个SSH会话的输出管道传送到特定命令:
$ pussh -f servers -o '|grep feature' command >output
同样,pussh 也支持为SSH会话输入提供数据:
$ pussh -f servers -i file command
$ pussh -f servers -i %h.data command
$ pussh -f servers -i 'get-data %h|' command
你可以自由混合使用 -i
和 -o
选项。
更有趣的是,pussh 可以一次性发送并执行命令(但请注意,它不会处理依赖关系,确保你的可执行文件是自包含的,或者目标主机的环境与你的环境兼容):
$ pussh -f servers -u my-deploy.sh args ...
大多数情况下,执行总时间受限于SSH连接建立的速度,而这个速度又受SSH Agent的限制。建议为特定主机调整连接速度,并保持一致。超过限定的速度可能会导致奇怪的连接错误(如ssh-agent认证失败、'no route to host'等)。
$ alias pussh='pussh -r 50'
速度主要受网络延迟的影响。你可以先通过ssh转发(ssh -A)登录到远程局域网的一台机器上,然后从那里运行 'pussh' 命令,使其尽可能靠近目标主机。以下是在千兆局域网上的一个实际基准测试:
$ time pussh -f servers -r 100 date
...
Total: 201 host(s), 4 second(s)
real 0m4.069s
user 0m7.132s
sys 0m3.140s
项目技术应用场景
pussh 适用于多种场景,例如批量更新服务器、执行系统检查、收集硬件信息、自动化部署等。以下是几个具体的应用场景:
- 批量更新服务器:使用pussh可以同时对多台服务器执行更新操作,提高运维效率。
- 系统监控:可以用来收集服务器状态,如磁盘使用率、内存使用情况等。
- 自动化部署:通过pussh可以简化自动化部署流程,提高部署速度。
项目特点
- 简单易用:pussh 的命令行界面直观,易于上手。
- 并行执行:能够同时对多个主机执行命令,提高效率。
- 灵活输入输出:支持从文件、标准输入读取主机列表,也支持将输出结果重定向到文件或传送到其他命令。
- 速度快:在网络延迟较小的情况下,pussh 可以实现快速执行。
pussh 无疑是自动化运维的得力助手,其高效、灵活的特点使得它成为系统管理员不可或缺的工具之一。如果你正在寻找一款简单实用的并行SSH工具,pussh 将是你不二的选择。
pussh Parallel SSH, batch and command line oriented 项目地址: https://gitcode.com/gh_mirrors/pus/pussh
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考