feat: v11.1.0 beta — 获取帮助板块、IOMMU ACS 拆分增强、NVMe 温度检测修复

- 新增主菜单「11. 获取帮助」:QQ 水群 / Telegram 聊天社区 / 作者付费咨询与赞助入口
- 硬件直通一键配置 (IOMMU) 可选增强参数:iommu=pt 与 pcie_acs_override=downstream,multifunction(强制拆分 IOMMU 组,解决 GPU 与系统盘同组时 vfio-pci 误接管系统盘问题)
- 修复温度监控无 NVMe 盘时误报 nvme0(glob 无匹配陷阱)
- 修正 MAC 绑定接口名校验提示文案
- 版本号升至 11.1.0(VERSION / CURRENT_VERSION / UPDATE 三处同步);新增 Docs/CHANGELOG.md 更新日志
This commit is contained in:
Maple
2026-08-19 18:43:34 +08:00
parent 8ec4315012
commit 50d0ecfa50
12 changed files with 171 additions and 12 deletions

View File

@@ -12,7 +12,7 @@ PVE Tools Pro 是一个面向 Proxmox VE 9.x 的交互式 Bash 运维工具集
- **入口层**: `PVE-Tools.sh`(约 330 行)-- 本地开发时按固定顺序 source lib/ 与 src/modules/(各模块 init.sh 显式优先);远程 curl 运行时从 GitHub Releases`releases/latest/download/PVE-Tools.sh`)下载构建产物执行,带重试/限速/校验/原子落盘守护。 - **入口层**: `PVE-Tools.sh`(约 330 行)-- 本地开发时按固定顺序 source lib/ 与 src/modules/(各模块 init.sh 显式优先);远程 curl 运行时从 GitHub Releases`releases/latest/download/PVE-Tools.sh`)下载构建产物执行,带重试/限速/校验/原子落盘守护。
- **基础设施层**: `lib/` -- 全局变量(config.sh)、日志/UI/确认/备份/GRUB(core.sh)、菜单交互框架(menu.sh)、网络检测/镜像选择(network.sh)、运行时守卫与主循环(runtime.sh)。 - **基础设施层**: `lib/` -- 全局变量(config.sh)、日志/UI/确认/备份/GRUB(core.sh)、菜单交互框架(menu.sh)、网络检测/镜像选择(network.sh)、运行时守卫与主循环(runtime.sh)。
- **功能模块层**: `src/modules/` -- 10 个子目录对应主菜单 1-10每个子目录内按功能拆分文件init.sh 为菜单入口)。 - **功能模块层**: `src/modules/` -- 11 个子目录对应主菜单 1-11每个子目录内按功能拆分文件init.sh 为菜单入口)。
- **构建系统**: `build.sh` 按顺序拼接 lib/*.sh + src/modules/**/*.sh 为 `dist/PVE-Tools.sh`gitignoreCI 构建);`dev.sh` 直接 source 全部源码供开发调试。 - **构建系统**: `build.sh` 按顺序拼接 lib/*.sh + src/modules/**/*.sh 为 `dist/PVE-Tools.sh`gitignoreCI 构建);`dev.sh` 直接 source 全部源码供开发调试。
- **辅助工具集**: `Tools/` 集成来自 tteck 社区的 13 个独立维护脚本(不参与构建,供用户手动执行)。 - **辅助工具集**: `Tools/` 集成来自 tteck 社区的 13 个独立维护脚本(不参与构建,供用户手动执行)。
- **插件市场**: `Modules/` 提供第三方脚本与二进制资产;`Modules/VGPU/*.so` 是 vGPU Unlock 功能的下载资产,不可删改。 - **插件市场**: `Modules/` 提供第三方脚本与二进制资产;`Modules/VGPU/*.so` 是 vGPU Unlock 功能的下载资产,不可删改。
@@ -47,6 +47,7 @@ graph TD
SRC --> M08["08-tools-about<br/>诊断工具与项目信息"] SRC --> M08["08-tools-about<br/>诊断工具与项目信息"]
SRC --> M09["09-security<br/>安全中心"] SRC --> M09["09-security<br/>安全中心"]
SRC --> M10["10-third-party<br/>第三方工具"] SRC --> M10["10-third-party<br/>第三方工具"]
SRC --> M11["11-help<br/>获取帮助"]
GHA --> W1["workflows/<br/>release/beta/PR"] GHA --> W1["workflows/<br/>release/beta/PR"]
@@ -64,7 +65,7 @@ graph TD
|---|---|---|---|---| |---|---|---|---|---|
| `/` (根) | Bash | 入口脚本:本地 source / 远程下载 Releases 单文件 | `PVE-Tools.sh` (~330行) | `README.md` | | `/` (根) | Bash | 入口脚本:本地 source / 远程下载 Releases 单文件 | `PVE-Tools.sh` (~330行) | `README.md` |
| `lib/` | Bash | 基础设施层全局变量、日志、UI、菜单框架、网络、运行时 | `config.sh`, `core.sh`, `menu.sh`, `network.sh`, `runtime.sh` | [lib/CLAUDE.md](./lib/CLAUDE.md) | | `lib/` | Bash | 基础设施层全局变量、日志、UI、菜单框架、网络、运行时 | `config.sh`, `core.sh`, `menu.sh`, `network.sh`, `runtime.sh` | [lib/CLAUDE.md](./lib/CLAUDE.md) |
| `src/modules/` | Bash | 功能模块层10 个子模块,对应主菜单 1-10 | 各 `*/init.sh` | [src/CLAUDE.md](./src/CLAUDE.md) | | `src/modules/` | Bash | 功能模块层11 个子模块,对应主菜单 1-11 | 各 `*/init.sh` | [src/CLAUDE.md](./src/CLAUDE.md) |
| `Tools/` | Bash | 第三方系统维护脚本集13个不参与构建 | 各 `.sh` 文件 | [Tools/CLAUDE.md](./Tools/CLAUDE.md) | | `Tools/` | Bash | 第三方系统维护脚本集13个不参与构建 | 各 `.sh` 文件 | [Tools/CLAUDE.md](./Tools/CLAUDE.md) |
| `Modules/` | Bash/二进制 | 插件市场与分发资产VGPU .so 为下载资产) | `install-zsh.sh`, `VGPU/*.so` | [Modules/CLAUDE.md](./Modules/CLAUDE.md) | | `Modules/` | Bash/二进制 | 插件市场与分发资产VGPU .so 为下载资产) | `install-zsh.sh`, `VGPU/*.so` | [Modules/CLAUDE.md](./Modules/CLAUDE.md) |
| `Docs/` | Markdown | 补充文档与《重构计划》设计稿 | `future-guide.md`, `重构计划-PVE-Tools模块化拆分.md` | -- | | `Docs/` | Markdown | 补充文档与《重构计划》设计稿 | `future-guide.md`, `重构计划-PVE-Tools模块化拆分.md` | -- |
@@ -214,6 +215,7 @@ foo_menu_dispatch() { # case 处理选项;未识别 return 1末尾必
| 日期 | 变更 | 来源 | | 日期 | 变更 | 来源 |
|---|---|---| |---|---|---|
| 2026-08-19 | 硬件直通一键配置 (IOMMU) 新增可选增强参数iommu=pt 与 pcie_acs_override=downstream,multifunction强制拆分 IOMMU 组,解决 GPU 与系统盘同组时 vfio-pci 误接管系统盘问题);关闭流程同步移除 | GitHub Issue |
| 2026-07-26 | 交互层框架化:新增 lib/menu.sh全部菜单迁移 run_menu确认体系两档成文GPU 直通 marker 统一与互斥检测GRUB 参数函数数组化;文档按现实重写(修正入口行数/远程模式/shc 等失真仓库卫生清理CI 护栏补全 | 交互层收口整理 | | 2026-07-26 | 交互层框架化:新增 lib/menu.sh全部菜单迁移 run_menu确认体系两档成文GPU 直通 marker 统一与互斥检测GRUB 参数函数数组化;文档按现实重写(修正入口行数/远程模式/shc 等失真仓库卫生清理CI 护栏补全 | 交互层收口整理 |
| 2026-07-08 | 项目模块化重构完成:单文件拆分为 lib/ + src/modules/10 子模块)。新增 build.sh/dev.sh。Web/ 目录移除。 | claude-init 架构师 | | 2026-07-08 | 项目模块化重构完成:单文件拆分为 lib/ + src/modules/10 子模块)。新增 build.sh/dev.sh。Web/ 目录移除。 | claude-init 架构师 |
| 2026-04-28 | 初始化 CLAUDE.md 体系 | claude-init 架构师 | | 2026-04-28 | 初始化 CLAUDE.md 体系 | claude-init 架构师 |

47
Docs/CHANGELOG.md Normal file
View File

@@ -0,0 +1,47 @@
# 更新日志 (Changelog)
更新日志明细,面向用户。线上更新检测数据源见根目录 `UPDATE` 文件(本文件为详细版)。
## v11.1.0 (2026-08-19)
### 新增:获取帮助板块(主菜单 11
新增独立板块,二级菜单三个入口:
1. **加 Q 群水群** — QQ 群 `1031976463`PVE 玩法与踩坑经验交流
2. **加聊天社区咨询** — Telegram 群 `https://t.me/pvetools233`,与 QQ 水群相互独立
3. **加作者付费咨询** — 一对一技术支持 / 紧急情况 / 深度排查 / 合作洽谈
付费咨询说明:项目免费开源,但作者**一般不提供免费的技术支持和免费解答方案**紧急情况或谈合作欢迎直接联系作者QQ `1520942621` / 微信 `kilomaple2024` / Telegram `https://t.me/pvetools_bot` / 邮件 `contact@u3u.icu`)。觉得工具好用想赞助作者,可前往官网支持页 `https://pve.u3u.icu/support` 或直接联系作者转账。
### 新增:硬件直通一键配置 (IOMMU) 可选增强参数
在「4. 硬件直通与显卡 → 6. 硬件直通一键配置 (IOMMU)」开启流程中,新增可选确认步骤,可选择写入直通增强参数:
- `iommu=pt` — 开启 IOMMU 直通模式,减少 DMA 重映射开销
- `pcie_acs_override=downstream,multifunction` — 强制拆分 IOMMU 组
适用场景:部分主板在 PCIe 拆分后会将 GPU 与系统盘/NVMe 分配到**同一个 IOMMU 组**GPU 直通时 vfio-pci 会按组接管所有设备(包括系统盘),导致开机即崩溃。本选项可避免此问题。关闭流程已同步移除这两个参数。
### 修复:温度监控误报 nvme0
修复了无 NVMe 硬盘时温度监控误报「检测到 nvme0 / 已添加 1 块」的问题。根因是 bash glob 在无匹配时返回字面模式字符串 `/dev/nvme[0-9]`,被误当作真实设备;现在循环内增加真实块设备校验,无设备时正确显示「已添加 0 块」。
### 其他
- 修正 MAC 绑定接口名校验的错误提示文案(「不允许特殊字符」)
---
## v11.0.0 (2026-07-26)
- 交互层框架化:新增 `lib/menu.sh`,全部菜单迁移 `run_menu`,统一 EOF/Ctrl+C 守卫与 pause 节奏
- 确认体系两档成文:轻档 `confirm_action` / 重档 `confirm_high_risk_action`(指定确认词)
- GPU 直通加固marker 统一写入、多方案互斥检测、IOMMU 开/关强制确认;去掉写死 PCI ID 与默认核显黑名单
- GRUB 参数数组化精确增删,新增 `grub_has_param`;默认内核优先 `proxmox-boot-tool kernel pin`
- 远程安装与自更新改走 GitHub Releases 完整单文件;修正 vGPU so 真实路径
- CI 护栏补全:源码 shellcheck、构建函数一致性、UPDATE 新鲜度、dist 安全扫描、发版前校验与 SHA256SUMS
- 文档与仓库卫生:按现实重写 CLAUDE/AGENTS修正 README-JP 文件名;清理历史截图与无关大文件
- Build 代号更新为 Liino
更早期版本历史请见根目录 `UPDATE` 文件与 GitHub Releases。

6
UPDATE
View File

@@ -1,3 +1,9 @@
v11.1.0
- 新增「获取帮助」板块(主菜单 11QQ 水群 / Telegram 聊天社区 / 作者付费咨询与赞助入口
- 硬件直通一键配置 (IOMMU) 新增可选增强参数iommu=pt 与 pcie_acs_override=downstream,multifunction强制拆分 IOMMU 组,解决 GPU 与系统盘同组时 vfio-pci 误接管系统盘问题)
- 修复温度监控在无 NVMe 硬盘时误报 nvme0 的问题glob 无匹配陷阱)
- 修正 MAC 绑定接口名校验的错误提示文案
v11.0.0 v11.0.0
- 交互层框架化:新增 lib/menu.sh全部菜单迁移 run_menu统一 EOF/Ctrl+C 守卫与 pause 节奏 - 交互层框架化:新增 lib/menu.sh全部菜单迁移 run_menu统一 EOF/Ctrl+C 守卫与 pause 节奏
- 确认体系两档成文:轻档 confirm_action / 重档 confirm_high_risk_action指定确认词 - 确认体系两档成文:轻档 confirm_action / 重档 confirm_high_risk_action指定确认词

View File

@@ -1 +1 @@
11.0.0 11.1.0

View File

@@ -83,7 +83,7 @@
| `check_debug_mode()` | 解析 `--i-know-what-i-do``--debug` 参数 | | `check_debug_mode()` | 解析 `--i-know-what-i-do``--debug` 参数 |
| `check_pve_version()` | PVE 版本检测(非 PVE9 环境需确认风险,拦截高危自动化) | | `check_pve_version()` | PVE 版本检测(非 PVE9 环境需确认风险,拦截高危自动化) |
| `block_non_pve9_destructive()` | 非 PVE9 环境拦截换源/升级等破坏性操作 | | `block_non_pve9_destructive()` | 非 PVE9 环境拦截换源/升级等破坏性操作 |
| `show_menu()` | 主菜单10 个功能入口 + 一言 Tips | | `show_menu()` | 主菜单11 个功能入口 + 一言 Tips |
| `main()` | **脚本主入口**trap INTCtrl+C 中断当前输入回上级而非杀进程)-> 权限/许可/调试/PVE 版本/网络检查 -> 更新检查 -> 主循环read 带 EOF 守卫优雅退出;子菜单返回不重复 pause | | `main()` | **脚本主入口**trap INTCtrl+C 中断当前输入回上级而非杀进程)-> 权限/许可/调试/PVE 版本/网络检查 -> 更新检查 -> 主循环read 带 EOF 守卫优雅退出;子菜单返回不重复 pause |
## 关键依赖与配置 ## 关键依赖与配置

View File

@@ -3,7 +3,7 @@
# Copyright (C) 2026 Ciriu Networks # Copyright (C) 2026 Ciriu Networks
# 版本信息 # 版本信息
CURRENT_VERSION="11.0.0" CURRENT_VERSION="11.1.0"
BUILD_NICKNAME="Liino" BUILD_NICKNAME="Liino"
VERSION_FILE_URL="https://raw.githubusercontent.com/PVE-Tools/PVE-Tools-9/main/VERSION" VERSION_FILE_URL="https://raw.githubusercontent.com/PVE-Tools/PVE-Tools-9/main/VERSION"
UPDATE_FILE_URL="https://raw.githubusercontent.com/PVE-Tools/PVE-Tools-9/main/UPDATE" UPDATE_FILE_URL="https://raw.githubusercontent.com/PVE-Tools/PVE-Tools-9/main/UPDATE"

View File

@@ -137,15 +137,14 @@ show_menu() {
show_menu_option "8" "诊断工具与项目信息 ${CYAN}( 系统信息 / 救砖 / 脚本管理 )${NC}" show_menu_option "8" "诊断工具与项目信息 ${CYAN}( 系统信息 / 救砖 / 脚本管理 )${NC}"
show_menu_option "9" "安全中心 ${CYAN}( 风险检查 / SSH加固 / CVE修补 )${NC}" show_menu_option "9" "安全中心 ${CYAN}( 风险检查 / SSH加固 / CVE修补 )${NC}"
show_menu_option "10" "第三方工具 ${CYAN}( CoolerControl / IT87驱动 / 社区脚本 )${NC}" show_menu_option "10" "第三方工具 ${CYAN}( CoolerControl / IT87驱动 / 社区脚本 )${NC}"
show_menu_option "11" "获取帮助 ${CYAN}( 联系作者 / 付费咨询 / 社区 )${NC}"
echo "$UI_DIVIDER" echo "$UI_DIVIDER"
show_menu_option "0" "${RED}退出脚本${NC}" show_menu_option "0" "${RED}退出脚本${NC}"
show_menu_footer show_menu_footer
echo echo
echo -e " ${YELLOW}Tips: ${SESSION_TIP:-一言获取失败,本次会话不再重试。}${NC}" echo -e " ${YELLOW}Tips: ${SESSION_TIP:-一言获取失败,本次会话不再重试。}${NC}"
echo -e "本项目正在收集用户意见,如您愿意,请前往填写问卷,这能帮到整个项目!"
echo -e "-> https://wj.qq.com/s2/27286538/9d9d/"
echo echo
echo -ne " ${PRIMARY}请输入您的选择 [0-10]: ${NC}" echo -ne " ${PRIMARY}请输入您的选择 [0-11]: ${NC}"
} }
# 应急救砖工具箱菜单 # 应急救砖工具箱菜单
main() { main() {
@@ -212,6 +211,9 @@ main() {
10) 10)
third_party_tools_menu third_party_tools_menu
;; ;;
11)
help_center_menu
;;
0) 0)
echo "感谢使用,谢谢喵" echo "感谢使用,谢谢喵"
echo "再见!" echo "再见!"
@@ -219,7 +221,7 @@ main() {
;; ;;
*) *)
log_error "哎呀,这个选项不存在呢" log_error "哎呀,这个选项不存在呢"
log_warn "请输入 0-10 之间的数字" log_warn "请输入 0-11 之间的数字"
;; ;;
esac esac

View File

@@ -4,7 +4,7 @@
## 模块职责 ## 模块职责
承载 PVE Tools Pro 全部业务逻辑,按主菜单编号拆分为 10 个子模块。每个子模块的 `init.sh` 为菜单入口函数,其余文件按功能领域进一步拆分。所有脚本由 `PVE-Tools.sh``dev.sh` 在 lib/ 加载完成后统一 source。 承载 PVE Tools Pro 全部业务逻辑,按主菜单编号拆分为 11 个子模块。每个子模块的 `init.sh` 为菜单入口函数,其余文件按功能领域进一步拆分。所有脚本由 `PVE-Tools.sh``dev.sh` 在 lib/ 加载完成后统一 source。
## 入口与启动 ## 入口与启动
@@ -28,6 +28,7 @@
| 8 | `08-tools-about/` | 诊断工具与项目信息 | 3 | 低 | | 8 | `08-tools-about/` | 诊断工具与项目信息 | 3 | 低 |
| 9 | `09-security/` | 安全中心 | 4 | 中等 | | 9 | `09-security/` | 安全中心 | 4 | 中等 |
| 10 | `10-third-party/` | 第三方工具 | 5 | 低 | | 10 | `10-third-party/` | 第三方工具 | 5 | 低 |
| 11 | `11-help/` | 获取帮助 | 1 | 低 |
--- ---
@@ -214,6 +215,18 @@
--- ---
## 11-help -- 获取帮助
**菜单入口**: `help_center_menu()` 定义于 `init.sh`
| 文件 | 核心函数 | 功能 |
|---|---|---|
| `init.sh` | `help_center_menu()`, `help_show_qq_group()`, `help_show_telegram_group()`, `help_show_paid_consult()` | 二级菜单 + 联系/付费咨询/社区信息展示 |
**依赖**: 仅依赖 `lib/``show_menu_header` / `UI_DIVIDER` 展示组件)。
---
## 关键依赖与配置 ## 关键依赖与配置
- **lib/ 先决条件**: 所有模块均依赖 `lib/config.sh`(全局变量)和 `lib/core.sh`(日志/UI/备份函数) - **lib/ 先决条件**: 所有模块均依赖 `lib/config.sh`(全局变量)和 `lib/core.sh`(日志/UI/备份函数)
@@ -221,7 +234,7 @@
- `04-gpu-passthrough`: nvidia.sh 的辅助函数被 amd-*.sh 复用iommu.sh 被多个子模块复用 - `04-gpu-passthrough`: nvidia.sh 的辅助函数被 amd-*.sh 复用iommu.sh 被多个子模块复用
- `05-vm-container`: storage-helper.sh 被 7 个同模块文件复用 - `05-vm-container`: storage-helper.sh 被 7 个同模块文件复用
- `06-networking`: interface.sh 被 6 个同模块文件复用 - `06-networking`: interface.sh 被 6 个同模块文件复用
- **无跨模块依赖**: 模块 01/02/03/07/08/09/10 仅依赖 lib/,不存在模块间引用 - **无跨模块依赖**: 模块 01/02/03/07/08/09/10/11 仅依赖 lib/,不存在模块间引用
## 测试与质量 ## 测试与质量
@@ -258,6 +271,7 @@ src/modules/
08-tools-about/ (3 文件) -- 诊断工具与项目信息 08-tools-about/ (3 文件) -- 诊断工具与项目信息
09-security/ (3 文件) -- 安全中心 09-security/ (3 文件) -- 安全中心
10-third-party/ (4 文件) -- 第三方工具 10-third-party/ (4 文件) -- 第三方工具
11-help/ (1 文件) -- 获取帮助
``` ```
## 变更记录 (Changelog) ## 变更记录 (Changelog)

View File

@@ -327,6 +327,8 @@ EOF
log_info "检测系统中的 NVME 硬盘" log_info "检测系统中的 NVME 硬盘"
nvi=0 nvi=0
for nvme in /dev/nvme[0-9]; do for nvme in /dev/nvme[0-9]; do
# glob 无匹配时 bash 会返回字面模式字符串,需校验真实块设备后跳过(参考下方 SATA 检测)
[ -b "$nvme" ] || continue
chmod +s /usr/sbin/smartctl 2>/dev/null chmod +s /usr/sbin/smartctl 2>/dev/null
cat >> $tmpf << EOF cat >> $tmpf << EOF

View File

@@ -110,6 +110,20 @@ kvmgt"
log_info "/etc/modules 中已存在 vfio 模块,跳过。" log_info "/etc/modules 中已存在 vfio 模块,跳过。"
fi fi
# 可选增强:部分主板的 PCIe 拆分会将 GPU 与系统盘/NVMe 分到同一 IOMMU 组,
# GPU 直通时 vfio-pci 会误接管系统盘控制器导致开机崩溃;
# 常规单显卡直通不受影响,因此默认询问后由用户决定是否开启。
echo -e "${YELLOW}是否同时启用直通增强参数 iommu=pt 与 pcie_acs_override=downstream,multifunction${NC}"
echo -e "${RED}仅在 GPU 与系统盘/NVMe 同属一个 IOMMU 组、GPU 直通时 vfio-pci 误接管系统盘导致开机崩溃的情况下建议开启;会强制拆分 IOMMU 组并开启直通模式。${NC}"
if confirm_action "写入直通增强参数 iommu=pt 与 pcie_acs_override一般不需要"; then
grub_add_param "iommu=pt"
grub_add_param "pcie_acs_override=downstream,multifunction"
# 即使基础 IOMMU 参数已存在grub_changed=0本次新写入也必须触发 update-grub
grub_changed=1
else
log_info "已跳过直通增强参数。若后续遇到 IOMMU 分组问题,可重新运行本菜单开启。"
fi
# 屏蔽核显/声卡驱动仅适用于"把核显直通给虚拟机"的场景; # 屏蔽核显/声卡驱动仅适用于"把核显直通给虚拟机"的场景;
# 宿主机还需要本地显示输出时开启会导致控制台黑屏,因此默认不开启。 # 宿主机还需要本地显示输出时开启会导致控制台黑屏,因此默认不开启。
# 设备级 vfio-pci ids 绑定由各显卡专用直通菜单按实际硬件写入,此处不再写死。 # 设备级 vfio-pci ids 绑定由各显卡专用直通菜单按实际硬件写入,此处不再写死。
@@ -161,6 +175,9 @@ disable_pass() {
fi fi
grub_remove_param "$iommu" grub_remove_param "$iommu"
# 同步移除可选直通增强参数(按 key 精确匹配,未配置过时无副作用)
grub_remove_param "iommu=pt"
grub_remove_param "pcie_acs_override"
backup_file "/etc/modules" backup_file "/etc/modules"
# 先移除本工具的 marker 配置块,再精确清理历史版本写入的裸模块行(含 kvmgt不误删其它行 # 先移除本工具的 marker 配置块,再精确清理历史版本写入的裸模块行(含 kvmgt不误删其它行
remove_block "/etc/modules" "IOMMU_BASE_MODULES" remove_block "/etc/modules" "IOMMU_BASE_MODULES"

View File

@@ -368,7 +368,7 @@ host_network_create_mac_binding() {
read -r -p "请输入固定接口名称(如 lan0、pve-eth0: " fixed_name read -r -p "请输入固定接口名称(如 lan0、pve-eth0: " fixed_name
[[ -n "$fixed_name" ]] || { display_error "接口名称不能为空"; return 1; } [[ -n "$fixed_name" ]] || { display_error "接口名称不能为空"; return 1; }
host_network_validate_systemd_link_name "$fixed_name" || { host_network_validate_systemd_link_name "$fixed_name" || {
display_error "接口名称不合法: $fixed_name" "名称需为 1-15 位,只允许字母、数字、_、.、-且不能是纯数字或保留名。" display_error "接口名称不合法: $fixed_name" "名称需为 1-15 位,只允许字母、数字(不允许特殊字符)。且不能是纯数字或保留名。"
return 1 return 1
} }

View File

@@ -0,0 +1,69 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (C) 2026 Ciriu Networks
# 获取帮助菜单
help_center_menu() {
run_menu "获取帮助" help_center_menu_render help_center_menu_dispatch "0-3"
}
help_center_menu_render() {
show_menu_option "1" "加 Q 群水群 ${CYAN}(闲聊交流)${NC}"
show_menu_option "2" "加聊天社区咨询 ${CYAN}(Telegram 群)${NC}"
show_menu_option "3" "加作者付费咨询 ${CYAN}(一对一技术支持)${NC}"
}
help_center_menu_dispatch() {
case "$1" in
1) help_show_qq_group ;;
2) help_show_telegram_group ;;
3) help_show_paid_consult ;;
*) return 1 ;;
esac
return 0
}
# 加 Q 群水群(闲聊交流为主,技术问题不保证有解答)
help_show_qq_group() {
clear
show_menu_header "加 Q 群水群"
echo " 欢迎加入 PVE-Tools QQ 水群,与大家交流 PVE 玩法与踩坑经验。"
echo
echo " QQ 群号: ${CYAN}1031976463${NC}"
echo
echo -e "${YELLOW}提示:${NC} 本群以闲聊交流为主,技术问题不保证有解答;需要技术支持请前往付费咨询。"
echo "${UI_DIVIDER}"
}
# 加聊天社区咨询Telegram 群,与 QQ 水群相互独立)
help_show_telegram_group() {
clear
show_menu_header "加聊天社区咨询"
echo " 欢迎加入 PVE-Tools Telegram 聊天社区,与全球用户交流使用心得。"
echo
echo " Telegram 群: ${CYAN}https://t.me/pvetools233${NC}"
echo
echo -e "${YELLOW}提示:${NC} 本社区与 QQ 水群相互独立;技术问题不保证有解答,需要技术支持请前往付费咨询。"
echo "${UI_DIVIDER}"
}
# 加作者付费咨询(不提供免费技术支持,赞助入口一并展示)
help_show_paid_consult() {
clear
show_menu_header "加作者付费咨询"
echo " 写脚本、维护项目需要时间和精力,这也是作者的饭碗。本工具免费开源,"
echo " 但一般不提供免费的技术支持和免费解答方案,感谢理解~"
echo
echo -e " ${RED}紧急情况 / 深度排查 / 谈合作:${NC}"
echo " QQ: 1520942621"
echo " 微信: kilomaple2024"
echo " Telegram: https://t.me/pvetools_bot"
echo " 邮件: contact@u3u.icu"
echo
echo " 想赞助作者:去官网支持一下,或直接加联系方式给作者转钱,感谢投喂!"
echo " 官网支持页: ${CYAN}https://pve.u3u.icu/support${NC}"
echo "${UI_DIVIDER}"
}