Proxmox [Tuto] Afficher la température CPU dans Proxmox VE 8

  • Auteur du sujet Auteur du sujet EVO
  • Date de début Date de début
  • Vague de SPAM

    Suite à une vague de spam sur le forum, les inscriptions sont temporairement limitées.

    Après votre inscription, un membre de l'équipe devra valider votre compte avant qu'il ne soit activé. Nous sommes désolés pour la gêne occasionnée et vous remercions de votre patience.

EVO

Administrateur
Membre du personnel
25 Novembre 2019
11 239
2 607
303
/var/run/docker.sock
[Tuto] Afficher la température CPU dans Proxmox VE 8

Comment avoir une vue sur les températures CPU de l’hôte dans l'interface de Proxmox ? Si la réponse à cette question vous intéresse, vous êtes au bon endroit :)


1692369577772.png
Le résultat de la modification, surligné en rouge

Sommaire :
1/ Installation de lm-sensors
2/ Modification de Nodes.pm
3/ Modification de pvemanagerlib.js
4/ Redémarrage de la WebUI




1/ Installation de lm-sensors
On install lm-sensors, qui permet de récupérer la température de la machine :

Code:
apt install lm-sensors

Une fois l'installation finie, on vérifie que cela fonctionne correctement en exécutant la commande sensors, le retour doit être quelques choses comme cela :
71hLihQ.png





2/ Modification de Nodes.pm
Nous allons éditer Nodes.pm pour y rajouter notre fonction :
Code:
nano /usr/share/perl5/PVE/API2/Nodes.pm

Rechercher ( touche F6 ) : my $dinfo

Dans le bloc :
Code:
        $res->{pveversion} = PVE::pvecfg::package() . "/" .
            PVE::pvecfg::version_text();

        my $dinfo = df('/', 1);     # output is bytes

Insérer : $res->{thermalstate} = `sensors -j`;

Le résultat doit être :
Code:
        $res->{pveversion} = PVE::pvecfg::package() . "/" .
            PVE::pvecfg::version_text();

        $res->{thermalstate} = `sensors -j`;

        my $dinfo = df('/', 1);     # output is bytes

Quitter avec Ctrl+X, enregistrer les modifications.





3/ Modification de pvemanagerlib.js
Nous allons éditer pvemanagerlib.js pour lui donner une place dans l'interface graphique de Proxmox :

Code:
nano /usr/share/pve-manager/js/pvemanagerlib.js

Rechercher ( touche F6 ) : PVE Manager Version

Code:
         {
             itemId: 'version',
             colspan: 2,
             printBar: false,
             title: gettext('PVE Manager Version'),
             textField: 'pveversion',
             value: ''
         }

Ajouter :
Code:
        {
            itemId: 'thermal',
            colspan: 2,
            printBar: false,
            title: gettext('CPU Thermal State'),
            textField: 'thermalstate',
              renderer: function(value) {
                let objValue = JSON.parse(value);
                let core0 = objValue["coretemp-isa-0000"]["Core 0"]["temp2_input"];
                let core1 = objValue["coretemp-isa-0000"]["Core 1"]["temp3_input"];
                let core2 = objValue["coretemp-isa-0000"]["Core 2"]["temp4_input"];
                let core3 = objValue["coretemp-isa-0000"]["Core 3"]["temp5_input"];
                return `Core 0: ${core0}°C | Core 1: ${core1}°C | Core 2: ${core2}°C | Core 3: ${core3}°C`;
                }
        }

Cela doit donner :
Code:
         {
             itemId: 'version',
             colspan: 2,
             printBar: false,
             title: gettext('PVE Manager Version'),
             textField: 'pveversion',
             value: ''
         },
         {
            itemId: 'thermal',
            colspan: 2,
            printBar: false,
            title: gettext('CPU Thermal State'),
            textField: 'thermalstate',
              renderer: function(value) {
                let objValue = JSON.parse(value);
                let core0 = objValue["coretemp-isa-0000"]["Core 0"]["temp2_input"];
                let core1 = objValue["coretemp-isa-0000"]["Core 1"]["temp3_input"];
                let core2 = objValue["coretemp-isa-0000"]["Core 2"]["temp4_input"];
                let core3 = objValue["coretemp-isa-0000"]["Core 3"]["temp5_input"];
                return `Core 0: ${core0}°C | Core 1: ${core1}°C | Core 2: ${core2}°C | Core 3: ${core3}°C`;
                }
         }

Dans le même fichier, quelques lignes au dessus de votre précédente modification :

Vous devez trouver :
Code:
{
    xtype: 'box',
    colspan: 2,
    padding: '0 0 20 0',
},

Remplacer padding: '0 0 20 0', par padding: '0 0 10 0',


Quitter avec Ctrl+X, enregistrer les modifications.





4/ Redémarrage de la WebUI

Relancer la WebUI : systemctl restart pveproxy

Note : Afin de voir la modification, j'ai du aller sur l'interface de proxmox en navigation privé ! Le refresh de la page n'était pas suffisant. Une fois le cache de mon navigateur vidé, alors l'affichage des température était effectif !



Source : Displaying CPU Temperature in Proxmox Summery in Real Time

2023-08-18 - Création
 

Pièces jointes

  • 1692368775164.png
    1692368775164.png
    86.6 KB · Affichages: 87
Dernière édition:
Salut,
Merci pour ce petit tuto.
J'ai un mini PC :
1693416343866.png
Proxmox en V8.0.4

Voici le résultat de la commande sensors :
Linux pve 6.2.16-10-pve #1 SMP PREEMPT_DYNAMIC PMX 6.2.16-10 (2023-08-18T11:42Z) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Aug 30 19:05:11 CEST 2023 on pts/1
root@pve:~# sensors
iwlwifi_1-virtual-0
Adapter: Virtual device
temp1: N/A

nvme-pci-0400
Adapter: PCI adapter
Composite: +39.9°C (low = -0.1°C, high = +99.8°C)
(crit = +109.8°C)

amdgpu-pci-0500
Adapter: PCI adapter
vddgfx: 1.16 V
vddnb: 681.00 mV
edge: +32.0°C
PPT: 14.00 W

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

J'ai modifié le code ton code :
Code:


{
itemId: 'thermal',
colspan: 2,
printBar: false,
title: gettext('CPU Thermal State'),
textField: 'thermalstate',
renderer: function(value) {
let objValue = JSON.parse(value);
let core0 = objValue["coretemp-isa-0000"]["Core 0"]["temp2_input"];
let core1 = objValue["coretemp-isa-0000"]["Core 1"]["temp3_input"];
let core2 = objValue["coretemp-isa-0000"]["Core 2"]["temp4_input"];
let core3 = objValue["coretemp-isa-0000"]["Core 3"]["temp5_input"];
return `Core 0: ${core0}°C | Core 1: ${core1}°C | Core 2: ${core2}°C | Core 3: ${core3}°C`;
}
}

Par :
{
itemId: 'thermal',
colspan: 2,
printBar: false,
title: gettext('CPU Thermal State'),
textField: 'thermalstate',
renderer: function(value) {
let objValue = JSON.parse(value);
let edge = objValue["coretemp-isa-0000"]["Core 0"]["temp2_input"];
return `Core 0: ${core0}°C`;
}

Puis je relance WebUI + vider le cache de chrome, J'ai "chargement" en boucle :
1693416710606.png

Merci.
 
Sur Ryzen tu devrais plutôt utiliser :
Code:
$res->{thermalstate} = `sensors k10temp-pci-00c3`;

et

Code:
        {
            itemId: 'thermal',
            colspan: 2,
            printBar: false,
            title: gettext('CPU Thermal State'),
            textField: 'thermalstate',
              renderer:function(value){
                const tdie = value.match(/Tdie.*?\+([\d\.]+)/)[1];
                return `Tdie: ${tdie} ℃ `
                }
        }

Source :
une des réponses au post cité en source du tuto : 1693417264200.png
 
nano -c /usr/share/perl5/PVE/API2/Nodes.pm
ALT+G:
Ligne: 407
$res->{thermalstate} = `sensors k10temp-pci-00c3`;


nano -c /usr/share/pve-manager/js/pvemanagerlib.js;
# ALT+ G:
# Ligne: 41900:

{
itemId: 'thermal',
colspan: 2,
printBar: false,
title: gettext('CPU Thermal State'),
textField: 'thermalstate',
renderer:function(value){
const tdie = value.match(/Tdie.*?\+([\d\.]+)/)[1];
return 'Tdie: ${tdie} ℃ ';
}
}

ALT+G:
Ligne: 41832
padding: '0 0 10 0',


# Relance du service
systemctl restart pveproxy


Problème de chargement infini
 
Dernière édition:
Sur Ryzen tu devrais plutôt utiliser :
Code:
$res->{thermalstate} = `sensors k10temp-pci-00c3`;

et

Code:
        {
            itemId: 'thermal',
            colspan: 2,
            printBar: false,
            title: gettext('CPU Thermal State'),
            textField: 'thermalstate',
              renderer:function(value){
                const tdie = value.match(/Tdie.*?\+([\d\.]+)/)[1];
                return `Tdie: ${tdie} ℃ `
                }
        }

Source :
une des réponses au post cité en source du tuto : Voir la pièce jointe 9910

Merci je n'avais pas vu le lien.

J'ai modifier le fichier Nodes.pm :
$res->{swap} = {
free => $meminfo->{swapfree},
total => $meminfo->{swaptotal},
used => $meminfo->{swapused},
};

$res->{pveversion} = PVE::pvecfg::package() . "/" .
PVE::pvecfg::version_text();

$res->{thermalstate} = `sensors k10temp-pci-00c3`;

my $dinfo = df('/', 1); # output is bytes

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

Et le fichier pvemanagerlib.js :
{
itemId: 'version',
colspan: 2,
printBar: false,
title: gettext('PVE Manager Version'),
textField: 'pveversion',
value: '',
},
{
itemId: 'thermal',
colspan: 2,
printBar: false,
title: gettext('CPU Thermal State'),
textField: 'thermalstate',
renderer:function(value){
const tdie = value.match(/Tdie.*?\+([\d\.]+)/)[1];
return `Tdie: ${tdie} ℃ `;
}
}

],
J'ai juste rajouté un ; après °C` car il n'y était pas.

Toujours le même problème sur la vue Résumé :
1693558746714.png
 
Le problème pourrais venir du caractère ` et il faut le remplacer par ' .

Le ` est pour les forum qui utilise markdown !!!
 
Le problème pourrais venir du caractère ` et il faut le remplacer par ' .

Le ` est pour les forum qui utilise markdown !!!
ALors non, car dans ce cas présent, le caractère ` est celui qui va permettre d'exécuter une commande, en occurrence sensors -j : il faut donc bien les deux ` encadrant la commande :
JavaScript:
`sensors -j`

J'ai testé et ça fonctionne bien sur mon instance, sur un vieux CPU Intel.
1695416608298.png


J'ai réussi à faire une ligne de commande pour la première modification, mais je ne suis pas sûr d'arriver à faire la seconde...
Faudra que je fasse d'autres essais un de ces 4...
La ligne qui modifie le fichier /usr/share/perl5/PVE/API2/Nodes.pm :
Bash:
sed -i "/\tmy \$dinfo/ { N; s/\tmy \$dinfo/\t\$res->\{thermalstate\} = \`sensors -j\`;\n\n&/ }" /usr/share/perl5/PVE/API2/Nodes.pm
Note : bien faire un backup avant ^^
 
Dernière édition:
Le problème pourrais venir du caractère ` et il faut le remplacer par ' .

Le ` est pour les forum qui utilise markdown !!!
Pas de changement.
Message automatiquement fusionné :

Bon j'ai trouvé comment faire :)

voilà le petit script qui permet de faire les modifications, sous condition qu'aucune modification préalable de ce fichier ait eu lieu.
Bash:
#!/usr/bin/env bash

# ╔══════════════════════════════════════════════════════════════════════════╗
# ║ Script pour ajouter les sondes de températures dans Proxmox VE           ║
# ╚══════════════════════════════════════════════════════════════════════════╝

# ! À lancer en root !
# chmod 764 *.sh

# ~~~~~~~~~~ Variables à modifier ~~~~~~~~~ #

backup_folder=~/"config-proxmox/backup-$(date +%Y-%m-%d--%Hh%Mm%Ss)"
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #

# ~~~~~~~~~~~ Dossier de backup ~~~~~~~~~~~ #
mkdir -p "${backup_folder}"
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #

printf "\n-- Script pour configurer les sondes de température dans proxmox --"
printf "\n-- 1. Mise à jour des dépôts et des paquets existants\n"
read -p "Press enter to continue"
sudo apt update && sudo apt upgrade

printf "\n-- 2. Installation des dépendances : lm-sensors\n"
read -p "Press enter to continue"
sudo apt install -y lm-sensors

printf "\n-- 3. Sauvegardes des fichiers à modifer"
cp --parents -v /usr/share/perl5/PVE/API2/Nodes.pm "${backup_folder}"
cp --parents -v /usr/share/pve-manager/js/pvemanagerlib.js "${backup_folder}"

printf "\n-- 4. Édition du fichier '/usr/share/perl5/PVE/API2/Nodes.pm'"
# 1er fichier : /usr/share/perl5/PVE/API2/Nodes.pm
# Source : https://stackoverflow.com/a/12248998/17694638
a_rechercher="\tmy \$dinfo"
a_ajouter="\t\$res->{thermalstate} = \`sensors -j\`;\n\n"
# Vérification que cette modification n'a pas déjà été faite
if ! grep "\$res->{thermalstate} = \`sensors -j\`;" /usr/share/perl5/PVE/API2/Nodes.pm; then
    # Modification non faite. On la fait.
    sed -i "/$a_rechercher/ { N; s/$a_rechercher/$a_ajouter&/ }" /usr/share/perl5/PVE/API2/Nodes.pm
fi

printf "\n-- 5. Édition du fichier '/usr/share/pve-manager/js/pvemanagerlib.js'"
# 2ème fichier : /usr/share/pve-manager/js/pvemanagerlib.js
# Source : https://forum.hardware.fr/hfr/Programmation/Shell-Batch/remplacer-plusieurs-fichiers-sujet_148479_1.htm#t2454720
a_rechercher="\t{\n\t    xtype: 'box',\n\t    colspan: 2,\n\t    padding: '0 0 20 0',\n\t},\n\t{\n\t    itemId: 'cpus',\n\t    colspan: 2,\n\t    printBar: false,\n\t    title: gettext('CPU(s)'),\n\t    textField: 'cpuinfo',\n\t    renderer: Proxmox.Utils.render_cpu_model,\n\t    value: '',\n\t},\n\t{\n\t    itemId: 'kversion',\n\t    colspan: 2,\n\t    title: gettext('Kernel Version'),\n\t    printBar: false,\n\t    textField: 'kversion',\n\t    value: '',\n\t},\n\t{\n\t    itemId: 'version',\n\t    colspan: 2,\n\t    printBar: false,\n\t    title: gettext('PVE Manager Version'),\n\t    textField: 'pveversion',\n\t    value: '',\n\t},"
a_remplacer="\t{\n\t    xtype: 'box',\n\t    colspan: 2,\n\t    padding: '0 0 10 0',\n\t},\n\t{\n\t    itemId: 'cpus',\n\t    colspan: 2,\n\t    printBar: false,\n\t    title: gettext('CPU(s)'),\n\t    textField: 'cpuinfo',\n\t    renderer: Proxmox.Utils.render_cpu_model,\n\t    value: '',\n\t},\n\t{\n\t    itemId: 'kversion',\n\t    colspan: 2,\n\t    title: gettext('Kernel Version'),\n\t    printBar: false,\n\t    textField: 'kversion',\n\t    value: '',\n\t},\n\t{\n\t    itemId: 'version',\n\t    colspan: 2,\n\t    printBar: false,\n\t    title: gettext('PVE Manager Version'),\n\t    textField: 'pveversion',\n\t    value: '',\n\t},\n\t{\n\t\titemId: 'thermal',\n\t\tcolspan: 2,\n\t\tprintBar: false,\n\t\ttitle: gettext('CPU Thermal State'),\n\t\ttextField: 'thermalstate',\n\t\trenderer: function (value) {\n\t\t\tlet objValue = JSON.parse(value);\n\t\t\tlet core0 = objValue[\"coretemp-isa-0000\"][\"Core 0\"][\"temp2_input\"];\n\t\t\tlet core1 = objValue[\"coretemp-isa-0000\"][\"Core 1\"][\"temp3_input\"];\n\t\t\tlet core2 = objValue[\"coretemp-isa-0000\"][\"Core 2\"][\"temp4_input\"];\n\t\t\tlet core3 = objValue[\"coretemp-isa-0000\"][\"Core 3\"][\"temp5_input\"];\n\t\t\treturn \`Core 0: \${core0}°C | Core 1: \${core1}°C | Core 2: \${core2}°C | Core 3: \${core3}°C\`;\n\t\t}\n\t},"
# Voir ici : https://stackoverflow.com/a/7680548/17694638
# sed "s/$a_rechercher/$a_remplacer/g" ./essais.js > tmp.js
# Vérification que cette modification n'a pas déjà été faite
if ! grep "return \`Core 0: \${core0}°C | Core 1: \${core1}°C | Core 2: \${core2}°C | Core 3: \${core3}°C\`;" /usr/share/pve-manager/js/pvemanagerlib.js; then
    # Modification non faite. On la fait.
    sed -z -i "s/$a_rechercher/$a_remplacer/g" /usr/share/pve-manager/js/pvemanagerlib.js
fi

printf "\n-- 6. Redémarrage de la Web-UI"
systemctl restart pveproxy

printf "\n-- Script terminé --"

Salut @MilesTEG1,
Effectivement ça fonctionne avec des CPU INTEL.

J'ai un AMD Ryzen 5, voir la message EVOTk.

Penses-tu qu'il est possible de modifier/adapter ton scipt au CPU AMD ?
 
Dernière édition:
@Loutre38
Essaye cet version de script, mais vérifie bien que ça fait bien une copie des fichiers :
edit : une copie des fichiers sera faite dans le dossier home/config-proxmox/backup-date-du-joue-heure de l'utilisateur qui lance le script
Bash:
#!/usr/bin/env bash

# ╔══════════════════════════════════════════════════════════════════════════╗
# ║ Script pour ajouter les sondes de températures dans Proxmox VE           ║
# ║                          Version pour CPU AMD                            ║
# ╚══════════════════════════════════════════════════════════════════════════╝

# ! À lancer en root !
# chmod 764 *.sh

# ~~~~~~~~~~ Variables à modifier ~~~~~~~~~ #

backup_folder=~/"config-proxmox/backup-$(date +%Y-%m-%d--%Hh%Mm%Ss)"
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #

# ~~~~~~~~~~~ Dossier de backup ~~~~~~~~~~~ #
mkdir -p "${backup_folder}"
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #

printf "\n-- Script pour configurer les sondes de température dans proxmox --"
printf "\n-- 1. Mise à jour des dépôts et des paquets existants\n"
read -p "Press enter to continue"
sudo apt update && sudo apt upgrade

printf "\n-- 2. Installation des dépendances : lm-sensors\n"
read -p "Press enter to continue"
sudo apt install -y lm-sensors

printf "\n-- 3. Sauvegardes des fichiers à modifer"
cp --parents -v /usr/share/perl5/PVE/API2/Nodes.pm "${backup_folder}"
cp --parents -v /usr/share/pve-manager/js/pvemanagerlib.js "${backup_folder}"

# DEBUG
read -p "Press enter to continue #3 Backup"
# DEBUG

printf "\n-- 4. Édition du fichier '/usr/share/perl5/PVE/API2/Nodes.pm'"
# 1er fichier : /usr/share/perl5/PVE/API2/Nodes.pm
# Source : https://stackoverflow.com/a/12248998/17694638
a_rechercher="\tmy \$dinfo"
a_ajouter="\t\$res->{thermalstate} = \`sensors k10temp-pci-00c3\`;\n\n"
# Vérification que cette modification n'a pas déjà été faite
if ! grep "\$res->{thermalstate} = \`sensors -j\`;" /usr/share/perl5/PVE/API2/Nodes.pm; then
    # Modification non faite. On la fait.
    sed -i "/$a_rechercher/ { N; s/$a_rechercher/$a_ajouter&/ }" /usr/share/perl5/PVE/API2/Nodes.pm
fi

printf "\n-- 5. Édition du fichier '/usr/share/pve-manager/js/pvemanagerlib.js'"
# 2ème fichier : /usr/share/pve-manager/js/pvemanagerlib.js
# Source : https://forum.hardware.fr/hfr/Programmation/Shell-Batch/remplacer-plusieurs-fichiers-sujet_148479_1.htm#t2454720
a_rechercher="\t{\n\t    xtype: 'box',\n\t    colspan: 2,\n\t    padding: '0 0 20 0',\n\t},\n\t{\n\t    itemId: 'cpus',\n\t    colspan: 2,\n\t    printBar: false,\n\t    title: gettext('CPU(s)'),\n\t    textField: 'cpuinfo',\n\t    renderer: Proxmox.Utils.render_cpu_model,\n\t    value: '',\n\t},\n\t{\n\t    itemId: 'kversion',\n\t    colspan: 2,\n\t    title: gettext('Kernel Version'),\n\t    printBar: false,\n\t    textField: 'kversion',\n\t    value: '',\n\t},\n\t{\n\t    itemId: 'version',\n\t    colspan: 2,\n\t    printBar: false,\n\t    title: gettext('PVE Manager Version'),\n\t    textField: 'pveversion',\n\t    value: '',\n\t},"
a_remplacer="\t{\n\t    xtype: 'box',\n\t    colspan: 2,\n\t    padding: '0 0 10 0',\n\t},\n\t{\n\t    itemId: 'cpus',\n\t    colspan: 2,\n\t    printBar: false,\n\t    title: gettext('CPU(s)'),\n\t    textField: 'cpuinfo',\n\t    renderer: Proxmox.Utils.render_cpu_model,\n\t    value: '',\n\t},\n\t{\n\t    itemId: 'kversion',\n\t    colspan: 2,\n\t    title: gettext('Kernel Version'),\n\t    printBar: false,\n\t    textField: 'kversion',\n\t    value: '',\n\t},\n\t{\n\t    itemId: 'version',\n\t    colspan: 2,\n\t    printBar: false,\n\t    title: gettext('PVE Manager Version'),\n\t    textField: 'pveversion',\n\t    value: '',\n\t},\n\t{\n    \titemId: 'thermal',\n    \tcolspan: 2,\n    \tprintBar: false,\n    \ttitle: gettext('CPU Thermal State'),\n    \ttextField: 'thermalstate',\n      \trenderer:function(value){\n        \tconst tdie = value.match(/Tdie.\*\?\+([\d\.]+)/)[1];\n        \treturn \`Tdie: \${tdie} ℃ \`;\n    \t}\n\t},"
# Voir ici : https://stackoverflow.com/a/7680548/17694638
# sed "s/$a_rechercher/$a_remplacer/g" ./essais.js > tmp.js
# Vérification que cette modification n'a pas déjà été faite
if ! grep "return \`Tdie: \${tdie} ℃ \`;" /usr/share/pve-manager/js/pvemanagerlib.js; then
    # Modification non faite. On la fait.
    sed -z -i "s/$a_rechercher/$a_remplacer/g" /usr/share/pve-manager/js/pvemanagerlib.js
fi

printf "\n-- 6. Redémarrage de la Web-UI"
systemctl restart pveproxy

printf "\n-- Script terminé --"
Merci, je teste demain.

Je lance ton script dans puTTy en connexion root ?

Bonne soirée.
 
Oui tout à fait.
Salut @MilesTEG1,

Voici mon retour, pas après un jour mais plutôt 5jrs après o_O;);).

Avant de lancer ton script, j'ai supprimé les modifications que j'avais rajouté manuellement.

Je crois qu'il y a un petit problème à l'étape 4 dans le fichier :
/usr/share/perl5/PVE/API2/Nodes.pm
Si on lance plusieurs fois le script, il rajoute à chaque fois :
$res->{thermalstate} = `sensors k10temp-pci-00c3`;
1695974429043.png

Petite erreur à l'étape 5 :
-- Script pour configurer les sondes de température dans proxmox --
-- 1. Mise à jour des dépôts et des paquets existants
Press enter to continue
-bash: sudo: command not found

-- 2. Installation des dépendances : lm-sensors
Press enter to continue
-bash: sudo: command not found

-- 3. Sauvegardes des fichiers à modifer/usr -> /root/config-proxmox/backup-2023-09-29--09h43m31s/usr
/usr/share -> /root/config-proxmox/backup-2023-09-29--09h43m31s/usr/share
/usr/share/perl5 -> /root/config-proxmox/backup-2023-09-29--09h43m31s/usr/share/perl5
/usr/share/perl5/PVE -> /root/config-proxmox/backup-2023-09-29--09h43m31s/usr/share/perl5/PVE
/usr/share/perl5/PVE/API2 -> /root/config-proxmox/backup-2023-09-29--09h43m31s/usr/share/perl5/PVE/API2
'/usr/share/perl5/PVE/API2/Nodes.pm' -> '/root/config-proxmox/backup-2023-09-29--09h43m31s/usr/share/perl5/PVE/API2/Nodes.pm'
/usr/share/pve-manager -> /root/config-proxmox/backup-2023-09-29--09h43m31s/usr/share/pve-manager
/usr/share/pve-manager/js -> /root/config-proxmox/backup-2023-09-29--09h43m31s/usr/share/pve-manager/js
'/usr/share/pve-manager/js/pvemanagerlib.js' -> '/root/config-proxmox/backup-2023-09-29--09h43m31s/usr/share/pve-manager/js/pvemanagerlib.js'
Press enter to continue #3 Backup

-- 4. Édition du fichier '/usr/share/perl5/PVE/API2/Nodes.pm'
-- 5. Édition du fichier '/usr/share/pve-manager/js/pvemanagerlib.js'sed: -e expression #1, char 1487: unknown option to `s'

-- 6. Redémarrage de la Web-UI
-- Script terminé --root@pve:~#


Et pas de modification du fichier :

/usr/share/pve-manager/js/pvemanagerlib.js

1695974551945.png
 
Dernière édition:
Voici mon retour, pas après un jour mais plutôt 5jrs après o_O;);).

Avant de lancer ton script, j'ai supprimé les modifications que j'avais rajouté manuellement.

Je crois qu'il y a un petit problème à l'étape 4 dans le fichier :
Si on lance plusieurs fois le script, il rajoute à chaque fois :
1695974429043.png
Hello 👋
Oh my ! j'ai pas modifié le test de vérification de présence de ce qu'on ajoute XD
C'est vite corrigé ça.
Remplace la ligne 43 par celle-ci :
Bash:
if ! grep "\$res->{thermalstate} = \`sensors k10temp-pci-00c3\`;" /usr/share/perl5/PVE/API2/Nodes.pm; then

Petite erreur à l'étape 5 :
-- 5. Édition du fichier '/usr/share/pve-manager/js/pvemanagerlib.js'sed: -e expression #1, char 1487: unknown option to `s'

Et pas de modification du fichier :

/usr/share/pve-manager/js/pvemanagerlib.js

1695974551945.png
Vu l'erreur, c'est normal qu'il n'y ait pas de modification du fichier.
Je vais regarder.
 
@Loutre38 Ça y est j'ai trouvé !
Ça n'a pas été facile car l'erreur etait bien planquée... j'ai juste oublié d'échapper deux caractères / dans la chaine de remplacement...
La bonne chaine de remplacement est donc :
Bash:
a_remplacer="\t{\n\t    xtype: 'box',\n\t    colspan: 2,\n\t    padding: '0 0 10 0',\n\t},\n\t{\n\t    itemId: 'cpus',\n\t    colspan: 2,\n\t    printBar: false,\n\t    title: gettext('CPU(s)'),\n\t    textField: 'cpuinfo',\n\t    renderer: Proxmox.Utils.render_cpu_model,\n\t    value: '',\n\t},\n\t{\n\t    itemId: 'kversion',\n\t    colspan: 2,\n\t    title: gettext('Kernel Version'),\n\t    printBar: false,\n\t    textField: 'kversion',\n\t    value: '',\n\t},\n\t{\n\t    itemId: 'version',\n\t    colspan: 2,\n\t    printBar: false,\n\t    title: gettext('PVE Manager Version'),\n\t    textField: 'pveversion',\n\t    value: '',\n\t},\n\t{\n    \titemId: 'thermal',\n    \tcolspan: 2,\n    \tprintBar: false,\n    \ttitle: gettext('CPU Thermal State'),\n    \ttextField: 'thermalstate',\n      \trenderer:function(value){\n        \tconst tdie = value.match(\/Tdie.*?\+([\d\.]+)\/)[1];\n        \treturn \`Tdie: \${tdie} ℃ \`;\n    \t}\n\t},"

Je modifie le script posté précédemment...
je pense déposer ça sur un dépôt github, niveau partage ce sera plus pratique.
 
Pour ceux qui veulent, j'ai mis mes scripts de post-install dans ce dépôt :
Je viens de tester ton nouveau script :

fichier : /usr/share/pve-manager/js/pvemanagerlib.js

toujours pas modifié :
1695992838578.png

Voici les infos lors de l'installation :
root@pve:~# #!/usr/bin/env bash

# ╔══════════════════════════════════════════════════════════════════════════╗
# ║ Script pour ajouter les sondes de températures dans Proxmox VE ║
# ║ Version pour CPU AMD ║
# ╚══════════════════════════════════════════════════════════════════════════╝

# ! À lancer en root !
# chmod 764 *.sh

# ~~~~~~~~~~ Variables à modifier ~~~~~~~~~ #

backup_folder=~/"config-proxmox/backup-$(date +%Y-%m-%d--%Hh%Mm%Ss)"
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #

# ~~~~~~~~~~~ Dossier de backup ~~~~~~~~~~~ #
mkdir -p "${backup_folder}"
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #

printf "\n-- Script pour configurer les sondes de température dans proxmox --"
printf "\n-- 1. Mise à jour des dépôts et des paquets existants\n"
read -p "Press enter to continue"
sudo apt update && sudo apt upgrade

printf "\n-- 2. Installation des dépendances : lm-sensors\n"
read -p "Press enter to continue"
sudo apt install -y lm-sensors

printf "\n-- 3. Sauvegardes des fichiers à modifer"
cp --parents -v /usr/share/perl5/PVE/API2/Nodes.pm "${backup_folder}"
cp --parents -v /usr/share/pve-manager/js/pvemanagerlib.js "${backup_folder}"

# DEBUG
read -p "Press enter to continue #3 Backup"
# DEBUG

printf "\n-- 4. Édition du fichier '/usr/share/perl5/PVE/API2/Nodes.pm'"
# 1er fichier : /usr/share/perl5/PVE/API2/Nodes.pm
# Source : https://stackoverflow.com/a/12248998/17694638
a_rechercher="\tmy \$dinfo"
a_ajouter="\t\$res->{thermalstate} = \`sensors k10temp-pci-00c3\`;\n\n"
# Vérification que cette modification n'a pas déjà été faite
if ! grep "\$res->{thermalstate} = \`sensors k10temp-pci-00c3\`;" /usr/share/perl5/PVE/API2/Nodes.pm; then
# Modification non faite. On la fait.
sed -i "/$a_rechercher/ { N; s/$a_rechercher/$a_ajouter&/ }" /usr/share/perl5/PVE/API2/Nodes.pm
else
printf "\nLa modification du fichier '/usr/share/perl5/PVE/API2/Nodes.pm' semble déjà avoir été effectuée.\nRien ne sera modifié ici. Vérifier quand même le fichier.\n"
fi

printf "\n-- 5. Édition du fichier '/usr/share/pve-manager/js/pvemanagerlib.js'"
# 2ème fichier : /usr/share/pve-manager/js/pvemanagerlib.js
# Source : https://forum.hardware.fr/hfr/Progr...lusieurs-fichiers-sujet_148479_1.htm#t2454720
a_rechercher="\t{\n\t xtype: 'box',\n\t colspan: 2,\n\t padding: '0 0 20 0',\n\t},\n\t{\n\t itemId: 'cpus',\n\t colspan: 2,\n\t printBar: false,\n\t title: gettext('CPU(s)'),\n\t textField: 'cpuinfo',\n\t renderer: Proxmox.Utils.render_cpu_model,\n\t value: '',\n\t},\n\t{\n\t itemId: 'kversion',\n\t colspan: 2,\n\t title: gettext('Kernel Version'),\n\t printBar: false,\n\t textField: 'kversion',\n\t value: '',\n\t},\n\t{\n\t itemId: 'version',\n\t colspan: 2,\n\t printBar: false,\n\t title: gettext('PVE Manager Version'),\n\t textField: 'pveversion',\n\t value: '',\n\t},"
a_remplacer="\t{\n\t xtype: 'box',\n\t colspan: 2,\n\t padding: '0 0 10 0',\n\t},\n\t{\n\t itemId: 'cpus',\n\t colspan: 2,\n\t printBar: false,\n\t title: gettext('CPU(s)'),\n\t textField: 'cpuinfo',\n\t renderer: Proxmox.Utils.render_cpu_model,\n\t value: '',\n\t},\n\t{\n\t itemId: 'kversion',\n\t colspan: 2,\n\t title: gettext('Kernel Version'),\n\t printBar: false,\n\t textField: 'kversion',\n\t value: '',\n\t},\n\t{\n\t itemId: 'version',\n\t colspan: 2,\n\t printBar: false,\n\t title: gettext('PVE Manager Version'),\n\t textField: 'pveversion',\n\t value: '',\n\t},\n\t{\n \titemId: 'thermal',\n \tcolspan: 2,\n \tprintBar: false,\n \ttitle: gettext('CPU Thermal State'),\n \ttextField: 'thermalstate',\n \trenderer:function(value){\n \tconst tdie = value.match(\/Tdie.*?\+([\d\.]+)\/)[1];\n \treturn \`Tdie: \${tdie} ℃ \`;\n \t}\n\t},"
# Voir ici : https://stackoverflow.com/a/7680548/17694638
printf "\n-- Script terminé --"la Web-UI"'/usr/share/pve-manager/js/pvemanagerlib.js' semble déjà avoir été effectuée.\nRien ne sera modifié ici. Vérifier quand même le fichier.\n"

-- Script pour configurer les sondes de température dans proxmox --
-- 1. Mise à jour des dépôts et des paquets existants
Press enter to continue
-bash: sudo: command not found

-- 2. Installation des dépendances : lm-sensors
Press enter to continue
-bash: sudo: command not found

-- 3. Sauvegardes des fichiers à modifer/usr -> /root/config-proxmox/backup-2023-09-29--15h09m31s/usr
/usr/share -> /root/config-proxmox/backup-2023-09-29--15h09m31s/usr/share
/usr/share/perl5 -> /root/config-proxmox/backup-2023-09-29--15h09m31s/usr/share/perl5
/usr/share/perl5/PVE -> /root/config-proxmox/backup-2023-09-29--15h09m31s/usr/share/perl5/PVE
/usr/share/perl5/PVE/API2 -> /root/config-proxmox/backup-2023-09-29--15h09m31s/usr/share/perl5/PVE/API2
'/usr/share/perl5/PVE/API2/Nodes.pm' -> '/root/config-proxmox/backup-2023-09-29--15h09m31s/usr/share/perl5/PVE/API2/Nodes.pm'
/usr/share/pve-manager -> /root/config-proxmox/backup-2023-09-29--15h09m31s/usr/share/pve-manager
/usr/share/pve-manager/js -> /root/config-proxmox/backup-2023-09-29--15h09m31s/usr/share/pve-manager/js
'/usr/share/pve-manager/js/pvemanagerlib.js' -> '/root/config-proxmox/backup-2023-09-29--15h09m31s/usr/share/pve-manager/js/pvemanagerlib.js'
Press enter to continue #3 Backup

-- 4. Édition du fichier '/usr/share/perl5/PVE/API2/Nodes.pm' $res->{thermalstate} = `sensors k10temp-pci-00c3`;

La modification du fichier '/usr/share/perl5/PVE/API2/Nodes.pm' semble déjà avoir été effectuée.
Rien ne sera modifié ici. Vérifier quand même le fichier.

-- 5. Édition du fichier '/usr/share/pve-manager/js/pvemanagerlib.js'
-- 6. Redémarrage de la Web-UI
-- Script terminé --root@pve:~#
root@pve:~#
 
@Loutre38
Tu ne voudrais pas m'envoyer ton fichier pvemanagerlib.js s'il te plait ? Que je vois s'il ne différerait pas du mien.