
1Panel 批量操作实战10 台服务器分组命令一次下发【免费下载链接】1Panel 1Panel is a modern, open-source Linux server management panel and a lightweight AI management platform.项目地址: https://gitcode.com/GitHub_Trending/1p/1Panel1Panel 的批量操作围绕两件事展开服务器分组和批量命令执行。把纳管机器归入分组把常用命令沉淀成模板需要时选中分组、点选命令即可多机同时执行。本文带你走完「主机分组 → 命令建库 → 批量下发与模板导出」的完整链路并顺带点出背后的关键实现。 第一步把服务器装进「分组」凌晨告警10 台机器要同时清缓存你不可能 SSH 十次。解法是把机器先归类进入「主机管理」页面源码见frontend/src/views/terminal/host/index.vue点「添加主机」录入服务器再点「分组」按钮创建服务器组。列表右上角的分组下拉框可以按组筛选主机的「分组」列支持行内直接切换归属多选主机后还能一次性批量删除。后端逻辑不复杂core/app/service/group.go的Create方法会先按「组名 类型」查重重名直接返回ErrRecordExist通过才落库。对外的 4 个接口定义在core/router/ro_group.goPOST /groups创建POST /groups/del删除POST /groups/update更新POST /groups/search查询⚡ 第二步把常用命令做成「菜单」命令管理在core/app/service/command.go里实现同样是创建、查询、更新、删除一套 CRUD。建命令时给它起名、写入命令体并挂到某个命令组下——这一步看似琐碎却是后面批量执行的「弹药库」。真正把命令组织成「可勾选菜单」的是SearchForTree它按「组 → 命令」两层结构生成树空组会被过滤掉前端用级联选择器一次选中多条命令。核心逻辑就是下面这个双层遍历for _, group : range groups { data : dto.CommandTree{Label: group.Name, Value: group.Name} for _, cmd : range cmdList { if cmd.GroupID group.ID { data.Children append(data.Children, dto.CommandTree{Label: cmd.Name, Value: cmd.Command}) } } if len(data.Children) ! 0 { lists append(lists, data) } }接口层core/router/command.go还挂了/commands/tree树查询、/commands/export导出、/commands/import导入等路由批量执行前用它取数即可。 第三步批量执行与模板导出 批量命令执行的完整流程可以拆成 4 步在命令管理界面创建命令或从命令树里选现成的回到主机页面用分组下拉框筛出目标机器或手动勾选选中命令执行1Panel 向组内各台主机逐台下发汇总查看每台机器的执行结果模板的「可携带」是容易被忽略的一点command.go中的Export方法会把全部command类型命令写成 CSV落到1panel/tmp/export/commands/目录文件名形如1panel-commands-时间戳.csv。新实例或同组同事的 1Panel 通过/commands/import直接还原命令库瞬间一致。两个使用边界值得记住批量操作的抓手是「分组」主机必须先归组才能按组筛选和批量操作命令树只展示有命令的组空组不会出现在选择列表里。一句话总结分组决定「对谁做」命令模板决定「做什么」两者对齐后多机运维就从逐台操作变成了按组下发。想继续了解 1Panel 的完整能力版图可以从官方说明文档 README.md 开始读起。【免费下载链接】1Panel 1Panel is a modern, open-source Linux server management panel and a lightweight AI management platform.项目地址: https://gitcode.com/GitHub_Trending/1p/1Panel创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考