fix: 增加一系列防止用户误操作的修复和删除试删代码

This commit is contained in:
Maple
2026-04-15 23:43:58 +08:00
parent 61a0457233
commit b922b9f8d7
2 changed files with 7 additions and 198 deletions

View File

@@ -12,7 +12,7 @@
# 版本信息
CURRENT_VERSION="7.0.0"
CURRENT_VERSION="7.0.1"
BUILD_NICKNAME="Mika"
VERSION_FILE_URL="https://raw.githubusercontent.com/Mapleawaa/PVE-Tools-9/main/VERSION"
UPDATE_FILE_URL="https://raw.githubusercontent.com/Mapleawaa/PVE-Tools-9/main/UPDATE"
@@ -5455,7 +5455,7 @@ menu_optimization() {
show_menu_option "1" "删除订阅弹窗"
show_menu_option "2" "温度监控管理 ${CYAN}(CPU/硬盘监控设置)${NC}"
show_menu_option "3" "CPU 电源模式配置"
show_menu_option "4" "${MAGENTA}一键优化 (换源+删弹窗+更新)${NC}"
show_menu_option "4" "${MAGENTA}一键优化 (换源+删弹窗+更新)${NC} / 请在外部SSH环境下使用该功能否则会导致PVE WebUi重启导致Shell断开连接修改失效"
show_menu_option "5" "配置邮件通知 ${CYAN}(SMTP/Postfix)${NC}"
echo "$UI_DIVIDER"
show_menu_option "0" "返回主菜单"
@@ -9984,8 +9984,7 @@ temp_monitoring_menu() {
show_menu_header "温度监控管理"
show_menu_option "1" "配置温度监控 ${CYAN}(CPU/硬盘温度显示)${NC}"
show_menu_option "2" "${RED}移除温度监控${NC} (移除温度监控功能)"
show_menu_option "3" "自定义温度监控选项 ${MAGENTA}(高级)${NC}"
show_menu_option "4" "UPS 服务管理 ${CYAN}(NUT)${NC}"
show_menu_option "3" "UPS 服务管理 ${CYAN}(NUT)${NC}"
echo "${UI_DIVIDER}"
show_menu_option "0" "返回上级菜单"
show_menu_footer
@@ -10001,9 +10000,6 @@ temp_monitoring_menu() {
cpu_del
;;
3)
custom_temp_monitoring
;;
4)
if command -v systemctl >/dev/null 2>&1; then
local nut_server_active nut_server_enabled nut_monitor_active nut_monitor_enabled has_nut_service
has_nut_service=false
@@ -10054,135 +10050,7 @@ temp_monitoring_menu() {
}
# 自定义温度监控配置
custom_temp_monitoring() {
clear
# Define options
declare -A options
# options[0]="CPU 实时主频"
# options[1]="CPU 最小及最大主频 (必选 0)"
# options[2]="CPU 线程主频"
# options[3]="CPU 工作模式 (必选 0)"
# options[4]="CPU 功率 (必选 0)"
# options[5]="CPU 温度"
# options[6]="CPU 核心温度 (不支持 AMD, 必选 5)"
# options[7]="核显温度 (仅支持 AMD, 必选 5)"
# options[8]="风扇转速 (可能需要单独安装传感器驱动, 必选 5)"
# options[9]="UPS 信息 (基于 NUT / upsc 采集)"
# options[a]="硬盘基础信息 (容量、寿命 (仅 NVME )、温度)"
# options[b]="硬盘通电信息 (必选 a)"
# options[c]="硬盘 IO 信息 (必选 a)"
# options[l]="概要信息: 居左显示"
# options[r]="概要信息: 居右显示"
# options[m]="概要信息: 居中显示"
# options[j]="概要信息: 平铺显示"
options[o]="推荐方案一:高大全 (除 UPS 信息以外全部居右显示)"
options[p]="推荐方案二:精简"
options[q]="推荐方案三:极简"
options[x]="一键清空 (还原默认)"
options[s]="跳过本次修改"
echo "请选择要启用的监控项目 (用空格分隔,如: o):"
echo
# Display options with checkboxes
# for key in 0 1 2 3 4 5 6 7 8 9 a b c l r m j o p q x s; do
for key in o p q x s; do
if [[ -n "${options[$key]}" ]]; then
echo " [ ] $key) ${options[$key]}"
fi
done
echo
read -p "请输入选择 (如: 0 5 6 或 o 或 s): " input
# Process user selections
if [[ "$input" == "s" ]]; then
log_info "跳过自定义配置"
return
fi
if [[ "$input" == "x" ]]; then
log_info "正在还原默认设置..."
cpu_del
log_success "已还原默认设置"
return
fi
if [[ "$input" == "o" ]]; then
log_info "应用推荐方案一:高大全..."
# Apply comprehensive configuration
cpu_add
log_success "推荐方案一已应用"
return
fi
if [[ "$input" == "p" ]]; then
log_info "应用推荐方案二:精简..."
# Apply simplified configuration
cpu_add
log_success "推荐方案二已应用"
return
fi
if [[ "$input" == "q" ]]; then
log_info "应用推荐方案三:极简..."
# Apply minimal configuration
cpu_add
log_success "推荐方案三已应用"
return
fi
# Process selected individual options
echo "您选择了: $input"
echo "正在配置自定义温度监控..."
# Parse and validate dependencies
selections=($input)
dependencies_met=true
# Check for dependencies
for selection in "${selections[@]}"; do
case "$selection" in
1) if [[ ! " ${selections[@]} " =~ " 0 " ]]; then
log_error "选项 1 需要选项 0请重新选择"
dependencies_met=false
break
fi ;;
3|4) if [[ ! " ${selections[@]} " =~ " 0 " ]]; then
log_error "选项 3 或 4 需要选项 0请重新选择"
dependencies_met=false
break
fi ;;
6|7|8) if [[ ! " ${selections[@]} " =~ " 5 " ]]; then
log_error "选项 6, 7 或 8 需要选项 5请重新选择"
dependencies_met=false
break
fi ;;
b) if [[ ! " ${selections[@]} " =~ " a " ]]; then
log_error "选项 b 需要选项 a请重新选择"
dependencies_met=false
break
fi ;;
c) if [[ ! " ${selections[@]} " =~ " a " ]]; then
log_error "选项 c 需要选项 a请重新选择"
dependencies_met=false
break
fi ;;
esac
done
if [[ "$dependencies_met" == true ]]; then
log_info "配置所选监控项..."
# In a real implementation, this would customize the monitoring based on selections
# For now, we'll use the existing cpu_add function
cpu_add # Use the existing function to install the basic monitoring
log_success "自定义温度监控配置完成"
else
log_error "配置失败,依赖关系不满足"
fi
}
# 已经死了。
# Ceph管理菜单
ceph_management_menu() {

65
UPDATE
View File

@@ -1,63 +1,4 @@
v7.0.0
v7.0.1
P0 / 最高优先级:数据安全边界与高风险操作防护体系重构
- 重构高风险数据操作确认链路为备份、恢复、配置导入导出、模板、克隆、Cloud-Init、迁移、防火墙开关、宿主机网络等关键路径补齐更明确的风险说明与确认词机制。
- 强化脚本级免责声明与许可提示:在首次进入脚本时明确提醒宿主机网络、桥接 / Bond / VLAN、防火墙以及 VM、磁盘、快照、克隆、恢复、迁移等操作可能造成管理面失联、业务中断或不可逆的数据 / 配置损坏。
- 修复多处高风险操作的边界问题,重点收紧 VM 定时备份、配置导入、宿主机网络提交、防火墙规则集导入、IPv6 NAT6 等场景的输入校验和回滚兜底。
- 补齐数据恢复导向内容:在高风险场景中强调一旦误操作,数据存活率取决于后续写入量、存储类型和是否立即停止写入,并补充专业数据恢复指引入口。
P1 / 高优先级VM 生命周期运维能力大幅补全
- 新增 VM 备份与恢复工具链:支持 vzdump 备份、从备份恢复为新 VM、定时备份任务管理并对备份压缩方式、模式、存储内容类型做更严格校验。
- 新增 VM 配置导入 / 导出:支持导出配置文件、导入配置文件,并在失败时尽量自动清理半成品 VM 与回滚已重绑的磁盘槽位。
- 新增模板 / 克隆 / Cloud-Init支持列出模板、转换模板、完整克隆、链接克隆、导入云镜像生成模板、写入 Cloud-Init 参数。
- 新增虚拟机磁盘管理:支持磁盘扩容、添加磁盘、移除磁盘、迁移磁盘到其他存储。
- 新增快照管理:支持创建、列出、删除和回滚快照,并将快照操作纳入高风险数据操作提示体系。
- 新增 VM 启动顺序与网络管理:支持设置开机自启 / 启动顺序 / 启动延迟,以及添加 / 移除网卡、修改 bridge / VLAN。
- 新增集群内迁移 VM支持目标节点选择与目标存储策略选择。
- 新增 IMG 镜像导入路径:支持镜像转换并导入 VM补齐镜像交付与模板化前置能力。
- 新增 VM / 容器定时开关机入口,提升日常运维自动化能力。
P1 / 高优先级宿主机网络、防火墙、IPv6 与诊断工具箱上线
- 新增宿主机网络配置向导:支持列出当前网卡与桥接、创建 / 删除 bridge、配置接口静态 IPv4 / IPv6、DHCPv4、DHCPv6、SLAAC。
- 新增 VLAN 子接口管理与 Bond 管理,支持模式 0 / 1 / 4 / 6并加强接口名、VLAN ID、MTU、成员关系等输入校验。
- 新增 staged 网络提交流程与失败自动回滚逻辑:提交正式网络配置时优先保护 `/etc/network/interfaces`,降低误改宿主机网络导致 SSH / WebUI 断连的风险。
- 新增 PVE 防火墙管理:支持数据中心 / 节点 / VM / CT 防火墙开关、安全组规则增删查、规则集 JSON / CLI 导入导出。
- 强化防火墙导入安全边界:导入时不再盲目信任源文件内的目标类型与标识符,而是重新选择目标并校验内容类型匹配关系。
- 新增 IPv6 助手:支持检测宿主机 IPv6 就绪度、检测 VM IPv6 就绪度、一键配置桥接 IPv6 透传 / SLAAC、一键配置 NAT6、测试 IPv6 连通性。
- 新增网络诊断工具箱:集成 traceroute、mtr、nmap、tcpdump 与端口连通性检查。
P1 / 高优先级GPU / PCI 直通能力体系补强
- 新增 NVIDIA 显卡直通 / 虚拟化完整菜单:包括 GPU 直通虚拟机、驱动信息与监控、驱动切换、宿主机预配置、vGPU Unlock 部署提示。
- 新增 AMD 独显直通:支持枚举 AMD / ATI GPU、选择 VM、写入 hostpci、可选同时直通音频功能、可选写入 AMD 的 VFIO ids 配置。
- 新增 AMD 核显直通:提供“需用户自备 ROM / vBIOS”的安全配置向导只负责校验 ROM 文件与写入 romfile不提供自动提取功能。
- 新增 AMD / NVIDIA 宿主机预配置路径:支持写入 IOMMU、VFIO 模块、黑名单及 initramfs / grub 更新链路。
- 保留并继续增强 Intel 核显虚拟化、Intel 核显直通、通用 IOMMU / RDM / NVMe / 控制器直通能力。
- 对 AMD 核显路径特别补充免责声明ROM / vBIOS 提取、文件来源合法性、兼容性与由此导致的黑屏 / Code 43 / 设备不可用风险由用户自行确认与承担。
P2 / 中优先级CLI 主交互界面与入口体验重构
- 保留原有 show_banner 风格的前提下,重写主菜单一级选项文本,让各入口描述更贴近真实功能内容。
- 将“硬件直通与显卡”主菜单描述扩展为包含 AMD主菜单整体可读性、任务映射与分类准确度更高。
- 主菜单与二级菜单的提示语、风险说明和若干返回文案做了整理,整体风格更统一。
- 对高风险模块在菜单层增加了更显眼的风险提示,尤其是 VM 数据操作与宿主机网络路径。
P2 / 中优先级Tips 系统重做为在线一言并会话级缓存
- 移除原本内置的预制随机 Tips 字符串池。
- 改为在脚本启动阶段、Cloudflare Trace 国家检测之后,从 `v1.hitokoto.cn` 获取一条随机一言作为本次会话 Tips。
- 本次脚本运行期间 Tips 不再反复刷新,避免每次返回主菜单都产生新的网络请求和内容跳变。
- 保留 Tips 区域展示,但失败时只显示一次性兜底提示,不重复重试。
P2 / 中优先级:合规、文档与用户引导增强
- 更新许可协议接受版本与生效日期,确保用户重新确认新的高风险使用边界与免责声明。
- 结合博客 / 文档内容补充关于虚拟机备份、迁移、Cloud-Init、宿主机网络、防火墙、IPv6 和误操作后数据恢复的配套说明。
- 在高风险路径中持续强化“先备份、再操作、最后验证”的运维顺序,引导用户在控制台或带外管理环境中执行危险操作。
P3 / 低优先级:一致性修复与细节清理
- 修复脚本内重复 `backup_file()` 定义导致的覆盖问题,统一备份行为与输出。
- 修复若干菜单输入范围提示、无效选项提示、字符串描述不准确等交互细节问题。
- 统一多处配置写入前的备份动作与日志提示,减少半成品状态和 silent failure。
- 对部分 VM / 网络 / 防火墙路径补充更明确的错误提示与下一步建议。
升级提醒
- 本次版本提升为 v7.0.0,属于脚本交互层、安全边界、虚拟机运维能力、宿主机网络能力与 GPU 直通能力的史诗级重构。
- 升级后建议优先检查主菜单入口、VM 备份 / 恢复、Cloud-Init、宿主机网络 staged 提交、PVE 防火墙导入导出、AMD / NVIDIA / Intel 直通菜单。
- 高风险功能请始终在已准备备份、已准备回滚方案、且具备控制台或带外管理条件下执行。
- 删去了一些陈旧功能,可能会导致用户误配置
- 增加了一键换原操作的提示,防止用户误操作