Où sommes nous ?

Retour

Température des disques d'un système distant

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).

Installation de HDDTemp

Côté Ubuntu

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.

Côté Gentoo

Il suffit de suivre le wiki.

Conky / Lua

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

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

La configuration Conky

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 }

/usr/local/share/Conky/remoteHDDTemp.lua

--[[ 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 :

Conclusion

Ç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.

Administration

Historique

A faire

Pour le moment, un seul disque distant est géré ...


Visitez :
La liste de nos voyages
Nos sorties Ski et rando
Copyright Laurent Faillie 2001-2019
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 Nombre de visites au total.

Vous pouvez laissez un commentaire sur cette page.