logo NodeSeekbeta

PVE重启开机自动检测 是否一键增加温度和cpu频率显示,NVME,机械固态硬盘信息

原脚本来自恩山大佬:https://www.right.com.cn/forum/thread-6754687-1-1.html

每次PVE升级之后都需要执行一次恩山大佬脚本,因为升级后PVE会自己还原文件,所以
封装了一个创建systemd服务的脚本,PVE升级重启开机时检测是否修改,未修改就执行脚本,最终效果:
image
image
该脚本需要在PVE宿主机执行,部署脚本代码:

#!/usr/bin/env bash

# --- 第一部分:立即安装依赖(仅在执行本部署脚本时运行一次) ---
echo "正在检查并安装必要依赖..."
if ! command -v turbostat > /dev/null 2>&1; then
    apt update && apt install -y linux-cpupower
    modprobe msr
    echo msr > /etc/modules-load.d/turbostat-msr.conf
    chmod +s /usr/sbin/turbostat
    echo "依赖安装成功。"
else
    echo "依赖已存在,跳过安装。"
fi

# --- 第二部分:生成自动修复脚本 ---
CHECK_EXE="/usr/local/bin/pve-auto-repair-mod.sh"
echo "正在生成自动修复脚本..."

cat > $CHECK_EXE << 'EOF'
#!/usr/bin/env bash

TARGET="/usr/share/perl5/PVE/API2/Nodes.pm"

# 1. 如果 UI 修改还在,直接闪人
if grep -q 'modbyshowtempfreq' "$TARGET"; then
    exit 0
fi

echo "$(date): 检测到 UI 修改丢失,等待联网..."

# 2. 等待联网循环 (40次 * 15秒 = 10分钟)
MAX_RETRIES=40
RETRY_COUNT=0
until ping -c 1 -W 2 223.5.5.5 > /dev/null 2>&1; do
    RETRY_COUNT=$((RETRY_COUNT + 1))
    if [ $RETRY_COUNT -ge $MAX_RETRIES ]; then
        echo "联网超时,退出。"
        exit 1
    fi
    sleep 15
done

# 3. 联网成功,直接拉取并执行作者脚本
echo "网络已就绪,正在重新应用 UI 补丁..."
(curl -Lf -o /tmp/temp.sh https://raw.githubusercontent.com/a904055262/PVE-manager-status/main/showtempcpufreq.sh || \
 curl -Lf -o /tmp/temp.sh https://mirror.ghproxy.com/https://raw.githubusercontent.com/a904055262/PVE-manager-status/main/showtempcpufreq.sh) && \
 chmod +x /tmp/temp.sh && \
 /tmp/temp.sh remod
EOF

chmod +x $CHECK_EXE

# --- 第三部分:创建 Systemd 服务 ---
SERVICE_PATH="/etc/systemd/system/pve-mod-check.service"
echo "正在配置 Systemd 服务..."

cat > $SERVICE_PATH << EOF
[Unit]
Description=PVE UI Auto-Repair (After Network)
After=pve-guests.service

[Service]
Type=oneshot
ExecStart=$CHECK_EXE
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable pve-mod-check.service

# 最后:尝试立即跑一次修复,看看当前需不需要改
systemctl start pve-mod-check.service

echo "------------------------------------------------"
echo "配置完成!"
echo "以后只需关注:PVE 升级重启后,等上网拨号成功,UI 会自动变回来。"
echo "------------------------------------------------"

说明:

  • 脚本里需要检测网络是否连接,因为大部分人的网络都是需要PVE下的虚拟机主路由(ikuai)来联网的,所以需要检测网络,时间是40次每次间隔15秒,如果机器性能不行,网络启动特别慢,改一下参数来延长检测时间
  • 如果是国外的PVE,把223.5.5.5改成1.1.1.1之类的就行
  • 建议把PVE虚拟机中主路由(ikuai)之类的启动顺序参数调整一下,顺序为1,启动延迟为30(给 iKuai 留出 30 秒“独自占用硬盘 IO”的时间来加载系统和拨号),让网络联网更加迅速:
    image

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有60108位seeker

🎉欢迎新用户🎉