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

EVO

Administreur
Membre du personnel
25 Novembre 2019
8 240
1 581
278
/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: 51
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.