@byxiaoxie2 月前

03/15
21:46
Home

PVE 硬盘温度查询脚本

1. 安装温度查询工具
apt install lm-sensors nvme-cli smartmontools -y
2. Shell脚本 

#!/bin/bash
echo "=== 硬盘温度 ==="
# NVMe 硬盘
for disk in $(ls /dev/nvme[0-9]n1 2>/dev/null); do
    model=$(lsblk -no MODEL $disk | tr -d '\n')
    temp=$(nvme smart-log $disk | grep "temperature" | awk '{print $3}' | sed 's/[^0-9]//g')
    if [ -n "$model" ] && [ -n "$temp" ]; then
        echo -e "类别:NVMe  型号:$model  温度:$temp°C"
    fi
done
# SATA 硬盘
for disk in $(ls /dev/sd[a-z] 2>/dev/null); do
    model=$(lsblk -no MODEL $disk | tr -d '\n')
    temp=$(smartctl -A $disk | grep "Temperature_Celsius" | awk '{print $10}' | sed 's/[^0-9]//g')
    if [ -n "$model" ] && [ -n "$temp" ]; then
        echo -e "类别:SATA  型号:$model  温度:$temp°C"
    fi
done

效果图:

disktemp PVE 硬盘温度查询脚本

PVE 硬盘温度查询脚本

@byxiaoxie6 月前

11/15
23:40
Home

PVE 添加CPU GPU Nvme 温度显示 (AMD CPU)

PVE 添加 CPU GPU Nvme 温度显示 (AMD CPU)

1. 安装必要的软件包
apt-update && apt-get install lm-sensors -y

2. 安装完成后执行指令 [sensors]
    root@pve:~# sensors
    amdgpu-pci-0500
    Adapter: PCI adapter
    vddgfx:        1.44 V  
    vddnb:       937.00 mV 
    edge:         +50.0°C  
    PPT:          14.00 W  

    nvme-pci-0400
    Adapter: PCI adapter
    Composite:    +53.9°C  (low  =  -5.2°C, high = +79.8°C)
                        (crit = +84.8°C)

    k10temp-pci-00c3
    Adapter: PCI adapter
    Tctl:         +52.8°C

3. 下面代码的正则表达式需要按照上面的输出文本进行调整

4. 找到文件 [Nodes.pm] 路径:[/usr/share/perl5/PVE/API2]

搜索代码关键字: 
$dinfo = df('/', 1);

在它的下面添加代码:
$res->{CPUtemperature} = `sensors`;
$res->{GPUtemperature} = `sensors`;
$res->{Nvmetemperature} = `sensors`;

修改后的样子:
my $dinfo = df('/', 1);     # output is bytes
$res->{CPUtemperature} = `sensors`;
$res->{GPUtemperature} = `sensors`;
$res->{Nvmetemperature} = `sensors`;

$res->{rootfs} = {
    total => $dinfo->{blocks},
    avail => $dinfo->{bavail},
    used => $dinfo->{used},
    free => $dinfo->{blocks} - $dinfo->{used},
};

return $res;

5. 找到文件 [pvemanagerlib.js] 路径:[/usr/share/pve-manager/js]

搜索代码找到关键字 [PVE.node.StatusView]:
Ext.define('PVE.node.StatusView', {})

关键字下面找到高度:
height: 350, // 按需求增加高度 例如我自己的是:height: 450

添加温度显示代码,找到 [items] 在代码中添加:
{
    itemId: 'CPUtemperature',
    colspan: 2,
    printBar: false,
    title: gettext('CPU Temperature'),
    textField: 'CPUtemperature',
    renderer: function(value){
        const regex = /Tctl:\s+([-+]?[0-9]*\.?[0-9]+)/;
        const match = value.match(regex);
        const temperature = match ? parseFloat(match[1]) : null;
        return ` ${temperature}℃`;
    }
},
{
    itemId: 'GPUtemperature',
    colspan: 2,
    printBar: false,
    title: gettext('GPU Temperature'),
    textField: 'GPUtemperature',
    renderer: function(value){
        const regex = /edge:\s+([-+]?[0-9]*\.?[0-9]+)/;
        const match = value.match(regex);
        const temperature = match ? parseFloat(match[1]) : null;
        return ` ${temperature}℃`;
    }
},
{
    itemId: 'Nvmetemperature',
    colspan: 2,
    printBar: false,
    title: gettext('Nvme Temperature'),
    textField: 'Nvmetemperature',
    renderer: function(value){
        const nvmeTemps = Array.from(value.matchAll(/Composite.*?\+([\d\.]+)?/g), m=>m[1]);
        return nvmeTemps.map((element, index) => `${element}℃`).join(' | ');
    }
}

添加完成后重启PVE面板:
systemctl restart pveproxy

效果图

image PVE 添加CPU GPU Nvme 温度显示 (AMD CPU)

PVE 添加CPU GPU Nvme 温度显示 (AMD CPU)

加载中……