====== hddtemp /dev/disk/by-id/ conky ====== * Objet : faire fonctionner hddtemp dans conky avec une identification par id * Niveau requis : débutant avisé * Commentaires : //hddtemp utilise l'identification par sdX , souvent elle est aléatoire . * le but est donc d'utiliser hddtemp avec une identification par id disque // FIXME * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) * Suivi : {{tag>en-chantier à-tester à-placer}} - FIXME Pour choisir, voir les autres Tags possibles dans [[:atelier:#tags|l'Atelier]]. * Création par [[user>Debian Alain]] 23/04/2020 * Testé par <...> le <...> FIXME * Alerte obsolescence : déconseillé à partir de Debian 11 et supprimé à partir de Debian 12 par [[user>--gilles--]] 19/03/2021 * Commentaires sur le forum : [[:url-invalide | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) FIXME **Nota :** Information hddtemp (0.3-beta15-54) du 02 février 2021 //zcat /usr/share/doc/hddtemp/NEWS.Debian.gz// : Le développement d'hddtemp est arrêté en amont depuis de nombreuses années et hddtemp se trouve donc depuis dans un mode de maintenance dans Debian. Il sera encore fourni dans la version Bullseye de Debian, mais ne sera pas présent dans la version Debian Bookworm. De nos jours, le module de noyau "drivetemp" est une meilleure alternative. Il utilise le module API du noyau de surveillance du matériel Linux (hwmon), afin de renvoyer la température de la même manière et avec les mêmes outils que les autres capteurs. Le chargement de ce module est aussi simple que la création d'un fichier dans le répertoire /etc/modules-load.d. Il suffit de créer un fichier dans le répertoire /etc/modules-load.d avec la commande suivante ( en root ) : echo drivetemp > /etc/modules-load.d/drivetemp.conf Source : zcat /usr/share/doc/hddtemp/NEWS.Debian.gz le Mar, 02 Fév 2021 ( bullseye ) remplacé par l'usage du paquet **lm-sensors** Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! ===== Introduction ===== hddtemp utilise par défaut le nommage par /dev/sdX. Ce nommage étant aléatoire, il est possible de le forcer à utiliser le nommage par /dev/disks/by-id/XXXXXX. En préambule, il faut installer comme suit hddtemp : apt install hddtemp Puis le reconfigurer afin qu'il soit lancé au démarrage de notre système et qu'il soit accessible par nos programmes (ici conky) : dpkg-reconfigure hddtemp {{https://debian-facile.org/images/file-R34a05c2bb4cb6e56e1c67e33b3015e1a.png}} {{https://debian-facile.org/images/file-R13796804c5511a5d606784c5f5da0052.png}} {{https://debian-facile.org/images/file-R33734a10281a8c7bbab95bde8cd98f35.png}} {{https://debian-facile.org/images/file-R4da2f25bd3ae566f27105b7f7ad9a579.png}} {{https://debian-facile.org/images/file-R8648856b9dd7415a67a6e8021eb6089a.png}} Nous devons ensuite configurer le fichier /etc/default/hddtemp afin de lui dire de lire aussi les disques nommés sous forme la /dev/disk/by-id/XXXXXX. Pour obtenir la correspondance entre /dev/sdX et /dev/disk/by-id/XXXXXX nous pouvons faire un ls -l dans le dossier /dev/disk/by-id/. Voici ce que j'obtiens : ls -lh /dev/disk/by-id/ total 0 lrwxrwxrwx 1 root root 9 avril 23 08:39 ata-CT500MX500SSD4_1813E134D584 -> ../../sdf ... / ... lrwxrwxrwx 1 root root 9 avril 23 08:39 ata-HL-DT-ST_BD-RE_BH10LS38_K9IB9NE1359 -> ../../sr1 lrwxrwxrwx 1 root root 9 avril 23 08:39 ata-HL-DT-ST_BD-RE_BH10LS38_K9IC31M4320 -> ../../sr0 lrwxrwxrwx 1 root root 9 avril 23 08:39 ata-ST2000DL003-9VT166_6YD1QBLS -> ../../sdc ... / ... lrwxrwxrwx 1 root root 9 avril 23 08:39 ata-ST2000DM001-1CH164_Z1E2XAN7 -> ../../sdb ... / ... lrwxrwxrwx 1 root root 9 avril 23 08:39 ata-ST2000DM001-9YN164_Z1E0AC50 -> ../../sda ... / ... lrwxrwxrwx 1 root root 9 avril 23 08:39 ata-ST4000VM000-2AF166_WDH0AFF6 -> ../../sdd ... / ... lrwxrwxrwx 1 root root 9 avril 23 08:39 ata-ST4000VX007-2DT166_ZGY57FLJ -> ../../sde ... / ... lrwxrwxrwx 1 root root 11 avril 23 08:39 md-name-Alain-PC:0 -> ../../md127 lrwxrwxrwx 1 root root 11 avril 23 08:39 md-uuid-4d4f9d9d:b7119121:c474b6d3:f56af7d6 -> ../../md127 lrwxrwxrwx 1 root root 9 avril 23 08:39 wwn-0x5000c5003fa4e30d -> ../../sda ... / ... lrwxrwxrwx 1 root root 9 avril 23 08:39 wwn-0x5000c500465b459f -> ../../sdc ... / ... lrwxrwxrwx 1 root root 9 avril 23 08:39 wwn-0x5000c5004fbead7a -> ../../sdb ... / ... lrwxrwxrwx 1 root root 9 avril 23 08:39 wwn-0x5000c5009ca2e849 -> ../../sdd ... / ... lrwxrwxrwx 1 root root 9 avril 23 08:39 wwn-0x5000c500b67c94c2 -> ../../sde ... / ... lrwxrwxrwx 1 root root 9 avril 23 08:39 wwn-0x500a0751e134d584 -> ../../sdf ... / ... Nous reportons ainsi la liste des devices qui nous intéresse dans le fichier de configuration d'hddtemp (ligne DISKS) nano -w /etc/default/hddtemp #Defaults for hddtemp initscript (/etc/init.d/hddtemp) # This is a POSIX shell fragment # [automatically edited by postinst, do not change line format ] # hddtemp network daemon switch. If set to true, hddtemp will listen # for incoming connections. RUN_DAEMON="true" # List of devices you want to use with hddtemp. If none specified, # hddtemp will probe standard devices. #DISKS="/dev/hda" DISKS="/dev/sd[a-f] /dev/disk/by-id/wwn-0x5000c5003fa4e30d /dev/disk/by-id/wwn-0x5000c5004fbead7a /dev/disk/by-id/wwn-0x5000c500465b459f /dev/disk/by-id/wwn-0x5000c5009ca2e849 /dev/disk/by-id/wwn-0x5000c500b67c94c2 /dev/disk/by-id/wwn-0x500a0751e134d584" # List of devices you want to use with hddtemp, but that would not be # probed for a working sensor. DISKS_NOPROBE="" # IP address of the interface on which you want hddtemp to be bound # on. If none specified, goes to 127.0.0.1. Use 0.0.0.0 to bind hddtemp # on all interfaces. INTERFACE="127.0.0.1" # Port number on which you want hddtemp to listen on. If none specified, # the port 7634 is used. PORT="7634" # Database file to use. If none specified, /etc/hddtemp.db is used. #DATABASE="/etc/hddtemp.db" # Separator to use between fields. The default separator is '|'. #SEPARATOR="|" # Logging period (in seconds) for the temperatures. If set to a value # different than 0, hddtemp will run as a daemon periodically logging # the temperatures through syslog RUN_SYSLOG="1" # Other options to pass to hddtemp OPTIONS="" ===== Test ===== Il ne nous reste plus qu'a tester pour voir si hddtemp récupère bien les températures de nos disques. Exemple avec le disque wwn-0x500a0751e134d584 (sdf) : alain@Alain-PC:~$ sudo hddtemp /dev/disk/by-id/wwn-0x500a0751e134d584 [sudo] Mot de passe de alain : /dev/disk/by-id/wwn-0x500a0751e134d584: CT500MX500SSD4: 46°C Nous pouvons alors reporter cette commande dans conky afin de monitorer la température de notre disque : ${alignc} disque ssd : ${hddtemp /dev/disk/by-id/wwn-0x500a0751e134d584}°C {{https://debian-facile.org/images/file-R6c8adfb35f6817f5a13827ff6885abff.png}} ===== Utilisation ===== DISKS="/dev/sd[a-f] /dev/disk/by-id/wwn-0x5000c5003fa4e30d /dev/disk/by-id/wwn-0x5000c5004fbead7a /dev/disk/by-id/wwn-0x5000c500465b459f /dev/disk/by-id/wwn-0x5000c5009ca2e849 /dev/disk/by-id/wwn-0x5000c500b67c94c2 /dev/disk/by-id/wwn-0x500a0751e134d584" Avec la modification ci-dessus du fichier /etc/default/hddtemp, vous avez accès aussi bien à la notation /dev/sdX qu'a la notation /dev/disk/by-id/XXXXX. ==== Température ssd en couleur ==== Nous allons créer un script bash afin de récupérer la température d'un disque. Ce script recevra 2 paramètres : * le mode d'affichage (conky|shell) * l'id du disque à monitorer nano -w ~/bin/show_disk_temperature.sh #! /bin/bash # Get temperature value SENSOR_PROBE="/dev/disk/by-id/$2" TEMP_STRING=$(hddtemp "$SENSOR_PROBE" | grep --only-matching '[0-9.]\+°C' | head --lines=1 ) TEMP_NUMBER=${TEMP_STRING%°C} # Set display mode based on arguments # Default is to display temperature in a console DISPLAY_MODE="$1" # Set display color based on temperature value # ≥ 70°C is high, ≥ 80°C is critical if [ $TEMP_NUMBER -ge 60 ]; then case "$DISPLAY_MODE" in ('conky') COLOR='red' ;; ('shell') COLOR=31 ;; esac elif [ $TEMP_NUMBER -ge 50 ]; then case "$DISPLAY_MODE" in ('conky') COLOR='yellow' ;; ('shell') COLOR=33 ;; esac else case "$DISPLAY_MODE" in ('conky') COLOR='green' ;; ('shell') COLOR=32 ;; esac fi # Set message syntax based on display mode case "$DISPLAY_MODE" in ('conky') MESSAGE='${color %s}%s${color}' ;; ('shell') MESSAGE='\033[1;%sm%s\033[0m\n' ;; esac # Print the formatted message printf "$MESSAGE" "$COLOR" "$TEMP_STRING" exit 0 Il faut maintenant le rendre exécutable : chmod +x ~/bin/show_disk_temperature.sh Et enfin nous pouvons l'intégrer à notre configuration conky : $hr ${alignc}Températures ${alignc} disque ssd : ${execpi 5 ~/bin/show_disk_temperature.sh conky wwn-0x500a0751e134d584} $hr  vous devriez obtenir ceci , par exemple : {{https://debian-facile.org/images/file-Rc472b5879667b83cf4123be96ec5e1d1.png}}