news 2026/9/1 10:39:17

1Panel 批量操作实战:10 台服务器分组,命令一次下发

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
1Panel 批量操作实战:10 台服务器分组,命令一次下发

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/1Panel

1Panel 的批量操作围绕两件事展开:服务器分组批量命令执行。把纳管机器归入分组,把常用命令沉淀成模板,需要时选中分组、点选命令即可多机同时执行。本文带你走完「主机分组 → 命令建库 → 批量下发与模板导出」的完整链路,并顺带点出背后的关键实现。

📦 第一步:把服务器装进「分组」

凌晨告警,10 台机器要同时清缓存,你不可能 SSH 十次。解法是把机器先归类:进入「主机管理」页面(源码见frontend/src/views/terminal/host/index.vue),点「添加主机」录入服务器,再点「分组」按钮创建服务器组。列表右上角的分组下拉框可以按组筛选;主机的「分组」列支持行内直接切换归属;多选主机后还能一次性批量删除。

后端逻辑不复杂:core/app/service/group.goCreate方法会先按「组名 + 类型」查重,重名直接返回ErrRecordExist,通过才落库。对外的 4 个接口定义在core/router/ro_group.go

  • POST /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 步:

  1. 在命令管理界面创建命令,或从命令树里选现成的
  2. 回到主机页面,用分组下拉框筛出目标机器(或手动勾选)
  3. 选中命令执行,1Panel 向组内各台主机逐台下发
  4. 汇总查看每台机器的执行结果

模板的「可携带」是容易被忽略的一点: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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/1 10:37:24

python的图论工业场景模拟第三十七篇:任务资源冲突着色(最少时间段排产),任务:抢夺同一设备的工序连边,用最少的颜色涂色,颜色数即最少班次,图建模说明:无向冲突图,节点=任务,边=冲突,nx.gr

任务资源冲突着色&#xff1a;抢夺同一设备的工序&#xff0c;最少用几个班次排完&#xff1f;"车间有 6 台 CNC、12 道加工工序。调度员排产时&#xff0c;两道工序抢同一台设备——不能同时干&#xff0c;只能一先一后。他拿 Excel 手工分早班/晚班/夜班&#xff0c;排了…

作者头像 李华
网站建设 2026/9/1 10:36:39

Java实现停车场管理系统:从车牌识别到计费全解析

无法基于该标题生成 CSDN 技术教程。该主题属于责任认定与赔偿纠纷范畴&#xff0c;需要警方、保险、司法等权威认定。建议提供技术类具体主题&#xff0c;例如“Java 停车场管理系统”“车辆定位与轨迹存储”“行车记录视频截取与取证工具”等&#xff0c;我可以继续输出完整的…

作者头像 李华
网站建设 2026/9/1 10:32:54

用语义搜索为视频建立自然语言索引:以GTA6宣传片为例

最近在 Hacker News 上看到一个很有想法的动手项目&#xff1a;有人专门为 GTA 6 的 Extended Look 宣传视频构建了一套语义搜索系统&#xff0c;用户不需要记住原片中的具体台词或描述&#xff0c;而是用一句自然语言就能找到对应的画面片段、字幕内容和时间戳。这类“给视频做…

作者头像 李华
网站建设 2026/9/1 10:31:56

CyberChef:数据加解密与分析的终极瑞士军刀

CyberChef&#xff1a;数据加解密与分析的终极瑞士军刀 【免费下载链接】CyberChef The Cyber Swiss Army Knife - a web app for encryption, encoding, compression and data analysis 项目地址: https://gitcode.com/GitHub_Trending/cy/CyberChef 面对一堆看不懂的 …

作者头像 李华