0%

PVE管理界面增加CPU温度频率(实时刷新),以及去除订阅弹窗

增加 PVE 的 CPU 温度/频率后界面如下。

image-20220814163829154

第一步,禁用企业源

image-20220814164049785

第二步,安装必要的传感器驱动(一条一条的单独运行)

apt update
apt-get install lm-sensors
apt-get install nvme-cli
apt-get install hddtemp

第三步,利用控制台在 home 文件夹中创建一个名称为 pve 的脚本

cd /home/  #打开 home 文件夹
nano pve.sh  #新建一个脚本
#将文章下面提供代码粘贴进去
#按 ctrl+X 退出
#按 Y 保存
#按回车返回控制台
chmod +x pve.sh   #赋予脚本可执行权限
./pve.sh   #执行脚本

第三步,需要粘贴的代码如下


#!/usr/bin/env bash
np="/usr/share/perl5/PVE/API2/Nodes.pm"
pvejs="/usr/share/pve-manager/js/pvemanagerlib.js"
plib="/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js"


pvever=$(pveversion | awk -F"/" '{print $2}')
echo pve 版本$pvever
echo 备份源文件
[ ! -e $np.$pvever.bak ] && cp $np $np.$pvever.bak || { echo 已经修改过,请务重复执行; exit 1;}
[ ! -e $pvejs.$pvever.bak ] && cp $pvejs $pvejs.$pvever.bak
[ ! -e $plib.$pvever.bak ] && cp $plib $plib.$pvever.bak

therm='$res->{thermalstate} = `sensors`;';
cpure='$res->{cpure} = `cat /proc/cpuinfo | grep -i  "cpu mhz"`;';

echo 修改 node.pm:sed -i "/PVE::pvecfg::version_text()/a $cpure\n$therm" $np

sed -n "/PVE::pvecfg::version_text()/,+5p"  $np


tmpf=tmpfile.temp
touch $tmpf
cat > $tmpf << 'EOF'
        {
                  itemId: 'thermal',
                  colspan: 2,
                  printBar: false,
                  title: gettext('温度'),
                  textField: 'thermalstate',
                  renderer:function(value){
                        const m = value.match(/(?<=:[^\+]+\+)\d+/g)
                        return `CPU: ${m[0]}(${m[1]},${m[2]},${m[3]},${m[4]}) | BOARD: ${m[5]} | NVME: ${m[6]}`;
                 }
        },
        {
                  itemId: 'cpumhz',
                  colspan: 2,
                  printBar: false,
                  title: gettext('CPU 频率'),
                  textField: 'cpure',
                  renderer:function(value){
                        const m = value.match(/(?<=:\s+)(\d+)/g);
                        return `CPUMHZ: ${m[0]} | ${m[1]} | ${m[2]} | ${m[3]}`;
                 }
        },
EOF

#找到关键字 pveversion 的行号
echo 修改 pvemanagerlib.js
ln=$(sed -n '/pveversion/,+10{/},/{=;q}}' $pvejs)
echo "匹配的行号 pveversion:" $ln

echo 修改结果:sed -i "${ln}r $tmpf" $pvejs
sed -n '/pveversion/,+30p' $pvejs

rm $tmpf


echo 修改页面高度
sed -i -r '/widget\.pveNodeStatus/,+5{/height/{s#[0-9]+#360#}}' $pvejs
sed -n '/widget\.pveNodeStatus/,+5{/height/{p}}' $pvejs
sed -i -r '/\[logView\]/,+5{/heigh/{s#[0-9]+#460#;}}' $pvejs
sed -n '/\[logView\]/,+5{/heigh/{p}}' $pvejs


echo 修改去除订阅弹窗
sed -r -i '/\/nodes\/localhost\/subscription/,+10{/^\s+if \(res === null /{N;s#.+#\t\t  if(false){#}}' $plib
sed -n '/\/nodes\/localhost\/subscription/,+10p' $plib

systemctl restart pveproxy

echo "请刷新浏览器缓存 shift+f5"

第三步运行完毕后,最后 Shift+F5 刷新一下网页

需要注意的是上面的代码中,其实也吧订阅弹窗一并去除了。

第四步,CPU 频率自动刷新变化

# 首先我来安装一下 CPU 驱动
apt-get install cpufrequtils  #安装 CPU 驱动

# 查询 cpu 状态
cpufreq-info