shellz批量命令终极指南:用groups分组把上百台服务器当1台管?5个提效命令
发布时间:2026/8/27 17:03:15 作者:尧图编辑部 阅读量:1,286

shellz批量命令终极指南用groups分组把上百台服务器当1台管5个提效命令【免费下载链接】shellzshellz is a small utility to manage your ssh, telnet, kubernetes, winrm, web or any custom shell in a single place.项目地址: https://gitcode.com/gh_mirrors/sh/shellz还在一台台 ssh 登录服务器巡检吗shellz是一款批量命令管理工具让你用groups 分组把 SSH、Telnet、Kubernetes、WinRM 甚至 Web 等各种 shell 集中管理一条命令就能把上百台服务器当 1 台来管。这篇文章带你快速掌握 5 个提效命令从零开始把逐台操作变成一键并行。快速上手3 步装好 shellz第 1 步下载源码需要 Go 1.8 环境git clone https://gitcode.com/gh_mirrors/sh/shellz.git第 2 步创建身份与 shell 配置。shellz 首次运行会在~/.shellz下自动生成idents身份和shells机器两个子目录每台服务器对应一个 JSON 文件{ name: web-01, host: 10.0.1.11, groups: [web, prod], port: 22, identity: default }第 3 步验证配置shellz -list终端会输出带 Groups、Type、Enabled 列的表格分组关系一目了然。 身份文件放在~/.shellz/idents/机器文件放在~/.shellz/shells/两者通过identity字段关联。字段结构定义在models/identity.go与models/shell.go。技巧1用 groups 分组批量选择目标机器groups字段是 shellz 批量命令的灵魂一台机器可以属于多个分组如prodwebshellz 启动时会自动把每台机器都加进默认的all组分组加载逻辑见models/storage.go。之后用-on参数直接按组名选择目标无需罗列机器名# 只查 web 组的机器不执行命令 shellz -list -on web # 对 web 组所有机器并行执行 id shellz -run id -on web分组建议按环境prod/test、按业务线web/db、按角色多维度打标签同一个机器可叠加多个组选目标时各取所需。技巧2-run 一条命令并行执行批量操作shellz -run 命令默认作用于all组即全部机器所有机器并行执行默认使用全部 CPU 核心数作为并发 worker可通过-workers调整# 在全部服务器上执行 uptime shellz -run uptime # 多选模式逗号分隔可混用组名 机器名 名称前缀 shellz -run id -on machineA, machineB, web选择逻辑支持三种写法① 分组名精确匹配② 机器名精确或前缀匹配如web-可选中web-01~web-99③ 逗号分隔的任意组合。实现位于cmd/shellz/utils.go的doShellSelection。技巧3-to 模板化输出结果自动归档批量执行的输出默认直接打印但用-to可以把结果落盘归档配合模板变量还能按机器分文件# 全部机器的输出追加到同一个文件 shellz -run uptime -to all.txt # 每台机器单独存一个文件模板变量取自信任/机器字段 shellz -run uptime -to {{.Identity.Username}}_{{.Name}}.txt模板里{{ }}之间的任意 shell 配置字段都可以引用如Name、Host、Identity.Username巡检报告再也不用手动复制粘贴。技巧4-test 一键健康检测坏机器自动下线# 测试全部机器无响应的自动禁用 shellz -test # 只测两台1 秒内不响应就算失败 shellz -test -on machineA, machineB -connection-timeout 1s-test会在选中机器上跑一条兼容性命令失败自动禁用后续-run会跳过恢复正常的机器自动重新启用省去了人工维护状态的麻烦。想强制对已禁用的机器执行命令时加-force即可。技巧5-enable / -disable 批量启停 -stats 执行统计# 批量启用/禁用支持组名、名称前缀、逗号多选 shellz -enable web shellz -disable machineA, machineB # 执行完打印统计总耗时、平均耗时、成功/失败数、输出总量 shellz -run id -stats-stats输出的统计面板total shells / total time / ok / ko对判断哪批机器慢、哪批挂了非常直观实现见cmd/shellz/run.go。效果对比从逐台 ssh 到一键并行场景传统方式shellz 批量命令查 100 台机器 uptime登录 100 次耗时 20 分钟shellz -run uptime -on all一条搞定只操作生产 web 机器手动维护 IP 清单shellz -run ... -on web按组选择巡检 归档逐台复制输出-to {{.Name}}.txt自动分文件剔除失联机器手动改清单shellz -test自动禁用/恢复收尾3 个实战小贴士先-list再动手改分组后先shellz -list -on 组名确认选中范围再执行批量命令避免误伤。分组即文档all组默认包含所有机器但建议给每台机器显式打上业务组未来接手的人一看 JSON 就懂拓扑。超时参数按需调网络差的环境加大-connection-timeout追求快速失败就调小读写超时另有-read-timeout/-write-timeout。装好 shellz、打上 groups 分组之后你会发现管理上百台服务器真的只是多敲了一条命令的事。【免费下载链接】shellzshellz is a small utility to manage your ssh, telnet, kubernetes, winrm, web or any custom shell in a single place.项目地址: https://gitcode.com/gh_mirrors/sh/shellz创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考