当前位置: 首页 > news >正文

1Panel 批量操作:一条命令库,下发到整组主机

1Panel 批量操作:一条命令库,下发到整组主机

【免费下载链接】1Panel🔥 1Panel is a modern, open-source Linux server management panel and a lightweight AI management platform.项目地址: https://gitcode.com/GitHub_Trending/1p/1Panel

凌晨两点,你第 9 次在终端里敲下同一条重启命令。命令没变,变的是机器——6 台生产机、同一个发版动作、同一批日志清理,你的手速没问题,是工具把"一批"当成了"六台单独做"。1Panel 的批量操作把这件事反过来:先把主机归拢成组,再给命令建库,多服务器管理就从逐台登录,变成"选组、选命令、确认"三步。

把散落的主机归拢到同一个组

主机入口在 frontend/src/views/terminal/host/index.vue:点"添加主机"逐台录入地址与凭据,保存后列表顶部就是分组筛选框。真正省事的是改组动作——每行主机的分组列可以内联切换,一台机器从"生产"挪到"预发",不用重建,改个下拉就行。

组的增删改查逻辑在 core/app/service/group.go 里,两处细节值得留意:建组时先查重名,重了直接拒绝;删组时如果组里还挂着命令,会直接报错拒删,只有把组内命令迁到默认组之后才放行。误点删除,命令不会变孤儿。

把要重复敲的命令写成一次性的资产

主机进组之后,省时间的下一环是命令。命令维护页 frontend/src/views/terminal/command/index.vue 支持创建"名称 + 命令体",并挂到任意组下。这是多服务器管理的分水岭:命令不再散落在聊天记录和你的记忆里,而是变成可检索、可复用的条目。后端 core/app/service/command.go 在创建时做名称查重,更新时允许改命令体、换组——发现命令写错了,改库这一条即可,不用回头逐台纠正。

为什么命令库要按组挂

命令攒到两位数,平铺列表肉眼找已经很慢了。SearchForTree方法把命令列表和组列表拼成两层树:第一层是组名,第二层是组内命令,空组自动丢弃,界面上看到的就是"组 → 命令"的结构化视图。

三步把一条命令下发到整组主机

① 进主机页,顶部分组筛选框选定目标组,确认这一批要碰哪几台机器。 ② 切到命令管理页,从分组树里挑好命令,点击执行并勾选组内主机。 ③ 回看每台机器的执行结果——成功、失败分开列,失败的只需单独补跑,不用整批重来。

分组树的核心逻辑就一个循环:

for _, group := range groups { data.Label = 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/app/service/command.go 里的Export方法会把全部命令写成带时间戳的 CSV,落在安装目录下的1panel/tmp/export/commands,命令页上有现成的导入入口。老机器上用了几个月的命令库,十分钟就能在新实例复刻一遍。下次需要批量发命令时,先建组——它比逐台登录快一个量级。

【免费下载链接】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),仅供参考

http://www.cnnetsun.cn/news/4349284.html

相关文章:

  • 破解无限免费误区:云工作流自动化与成本控制实践
  • 腾讯音乐移动客户端秋招笔试复盘:考点、编程题与时间分配策略
  • kitty 终端使用指南:GPU 加速的跨平台终端,从安装到远程编辑文件
  • 贝壳找房春招C++笔试卷2复盘:八股、算法与工程思维全解析
  • UrbanMind AI:融合遥感与POI数据的城市空间智能决策平台
  • 大模型Agent开发进阶:上下文引擎设计与实战
  • 大模型多轮训练:从SFT到RLHF的迭代精修指南
  • 南京街道乡镇边界矢量数据包:SHP、坐标系与GIS实操全解析
  • 美团运维安全岗笔试复盘:Linux排错到K8s容器安全全解析
  • 24LC512 EEPROM读写例程:I2C页写、写周期等待与避坑指南
  • 智能体AI验证框架:让大模型Agent从不确定走向可信
  • 微信QQ消息撤回后还能不能找回?RevokeMsgPatcher 防撤回工具使用指南
  • 升降压电路设计实战:从原理到应用,掌握宽电压输入DC-DC转换
  • jq 完整使用指南:从零上手指令行 JSON 处理,5 分钟跑通第一个实战
  • 论文分章节检测合格、合并全文后AI率变高怎么办:三款AIGC工具对比
  • ROS2双臂机器人视觉抓取全流程:手眼标定与MuJoCo仿真实践
  • 别再抄国一操作了:从看懂教学到真正上分的训练方法
  • LibTV 漫剧制作全流程:从剧本分镜到角色一致性,批量出片的实战教程
  • Windows重叠IO完成例程:Socket服务端文件传输实战解析
  • 携程2025春招开发笔试复盘:题型考点与编程题解析
  • WeChatMsg:微信聊天记录怎么导出?3步本地搞定
  • 测试开发高频笔试题全解析:从MySQL优化到LRU手写
  • Ollama与BGE-M3实战:本地大模型+知识库构建RAG问答系统
  • 基于Python与NLP的股市热点板块自动化复盘分析
  • Open Notebook 快速上手:10分钟搭一套本地私有的AI笔记与问答工作区
  • C++实现TwinCAT ADS通讯:环境配置、API调用与性能优化实战
  • mpv 命令行参数快速上手指南:从播放到调参,一篇讲透
  • 如何在PC上免费运行Switch游戏?yuzu模拟器完整指南
  • AI生成节点大样写实化:从提示词设计到批量出图全流程拆解
  • 基于多尺度集成极限学习机回归(Matlab代码实现)