HDDTemp permet de connaître la température des disques durs et expose cette information par un port TCP. Conky gère ces informations pas la balise ${hddtemp} sauf qu'il ne sait pas gérer plusieurs hôtes : il est impossible d'afficher à la fois les informations des disques locaux et de ceux d'un système distant, c'est soit l'un, soit l'autre.
Dans ce billet, un Conky fonctionnant sous Gentoo surveillera les disques d'un système Ubuntu (bidon.chez.moi).
L'installation côté Ubuntu se fait par un classique :
apt-get install hddtemp
L'installer pose quelques questions, et ne particulier l'adresse IP sur laquelle seront exposées les informations. Il faut impérativement choisir 0.0.0.0 pour qu'elles le soient sur toutes les interfaces de la machines (par défaut, elles ne le seraient que sur le loopback).
Ces informations sont reprises à la fois dans le fichier /etc/init.d/hddtemp et /etc/default/hddtemp. Ce dernier ayant la primauté, nous y feront nos personnalisations, en particulier le nom des disques à surveiller :
DISKS="/dev/sd?"
A noter aussi que l'on peut spécifier le séparateur grâce à la variable
SEPARATOR="|"
On terminera par
/etc/init.d/hddtemp start
Petit test pour voir que ça fonctionne : depuis le shell
laurent@chose ~ $ curl telnet://bidule.chez.moi:7634
|/dev/sda|WDC WD5000AAKB-00H8A0|30|C|laurent@chose ~ $
On remarque que la réponse ne contient pas de retour chariot ... important pour la suite.
Il suffit de suivre le wiki.
Il existe une extension Curl pour Lua qui nous faciliterait bien la vie ... mais je n'ai pas réussi à trouver l'ebuild correspondante. Comme je souhaite avant tout m'affranchir de toute gestion de dépendances à la main, nous allons donc passer par les sockets qui sont elles connues de portage.
luasocket est une extension qui permet d'accéder aux sockets depuis lua. Cette librairie est avant tout une passerelle entre Lua et l'API C ... il est donc nécessaire de savoir ce qu'est une socket et comment l'utiliser depuis le C.
Cette extension ne fait pas parti de la branche stable de portage. Pour pouvoir l'utiliser, il est nécessaire d'ajouter la ligne suivante dans le fichier /etc/portage/package.keywords
dev-lua/luasocket ~x86
suivit d'un classique
emerge dev-lua/luasocket
On commence par charger le script Lua.
lua_load /usr/local/share/Conky/remoteHDDTemp.lua
Ensuite, pour simplifier la suite, je crée un template pour l'affichage des informations
template0 ${color Grey}\1 : ${color}\2 °\3
et dans la section TEXT, à l'endroit où je souhaite afficher l'information
${lua_parse remoteHDDTemp bidule.chez.moi 7634 }
où
--[[ RemoteHDDTemp.lua - v1.0 02/01/2012
Accède à la température des disques d'un système distant.
(C) Laurent Faillie - 2012 : http://destroyedlolo.info
Licence GPL v3
]]
socket = require("socket")
function conky_remoteHDDTemp( server, port )
local clt = socket.try(socket.connect(server, port))
local try = socket.newtry(function() clt:close() end) -- create a try function that closes 'clt' on error
local s,err = try(clt:receive('*a'))
clt:close()
local mnt,tp,temp,unit = string.match( s, "|(/dev/%a+)|(%a.+)|(%d+)|(%a)")
return "${template0 ".. server ..":".. mnt .." ".. temp .." ".. unit .."}"
end
A noter :
Ça fonctionne pas mal et c'est vraiment très léger. De plus, l'utilisation des sockets ouvre un grand éventail de possibilités, ne serait-ce que de surveiller une machine distante par SNMP.
Pour le moment, un seul disque distant est géré ...
Visitez : Nos sorties Ski et rando |
Copyright Laurent Faillie
2001-2024
N'oubliez pas d'entrer le mot de passe pour voir aussi les photos perso. |
Contactez moi si vous souhaitez réutiliser ces photos et pour les obtenir avec une plus grande résolution. |
Visites durant les 7 derniers jours au total. |
Vous pouvez
laissez un commentaire
sur cette page.