He oui, autant une machine récente supporte relativement bien les coupures de courant, autant les veilles machines qui tournent sans arrêt depuis plusieurs années le supportent beaucoup moins bien.... Grâce à un onduleur et un logiciel de gestion, la machine peut être arrêtée proprement et ainsi peut redémarrer sans souci par la suite :)

Une fois l'onduleur branché en amont de la machine, on vérifie que le système le voit bien avec la commande lsusb
Vous devriez voir une ligne ressemblant à ceci :

Bus 004 Device 002: ID 051d:0002 American Power Conversion Uninterruptible Power Supply

Maintenant, on passe en root et on installe apcupsd

aptitude install apcupsd

Tous les fichiers de config se trouvent dans le dossier /etc/apcupsd.
Tout d'abord on édite le fichier /etc/default/apcupsd et on met la valeur ISCONFIGURED à yes
Ensuite, on édite le fichier de config' principal: /etc/apcupsd/apcupsd.conf

voici le minimum à renseigner, dans la section General configuration parameters

UPSNAME mon_onduleur
UPSCABLE usb
UPSTYPE usb
DEVICE

Maintenant, on va configurer le comportement de l'onduleur


## temps en secondes au bout du quel l'onduleur détectera la coupure
ONBATTERYDELAY 5


## si batterie inferieure à 5% on éteint la machine
BATTERYLEVEL 5


## si charge de la batterie moins de 3 minutes, on éteint la machine
MINUTES 3


## si plus de n minutes passées sur batterie, extinction de la machine. fonction désactivée par défaut
TIMEOUT 0


## temps en secondes avant l'extinction à partir du quel les utilisateurs loggés sur la machine seront prévenus régulièrement qu'il faut se déconnecter
ANNOY 300


## prévenir les utilisateurs après 60 secondes lors d'une coupure de courant
ANNOYDELAY 60


## empecher les utilisateurs de se logger sur la machine ou pas, lors de la coupure de courant. désactivé par défaut
NOLOGON disable


## temps en secondes pendant lequel apcupsd continuera a tourner, une fois l'extinction de la machine lancée. désactivé par défaut
KILLDELAY 0

Plus d'infos sur chaque variable et valeur peuvent être trouvées ici: http://linux.die.net/man/8/apcupsd

Maintenant, on passe à la configuration IP


## active le serveur apcupsd sur ip, pour obtenir les informations de l'onduleur
NETSERVER ON


## sur quelle ip écouter le serveur.

## 127.0.0.1 = local uniquement, les infos ne seront pas disponibles à partir d'une autre machine

## 0.0.0.0 = toutes les ip de la machine

## attention, on ne PEUT PAS spécifier cette variable plusieurs fois, ou donner une liste d'adresses ip
NISIP 0.0.0.0


## sur quel port le serveur doit il écouter (3551 par défaut)
NISPORT 3551


## fichiers de logs des évènements
EVENTSFILE /var/log/apcupsd.events


## taille maximum du fichier de log, en Kilo-octets
EVENTSFILEMAX 10


## valeur par défaut pour gèrer l'onduleur d'une seule machine
UPSCLASS standalone


## si onduleur géré par une seule machine, désactivé
UPSMODE disable

le reste des lignes peut être laissé par défaut.

Maintenant qu'on a tout bien configuré, on va lancer apcupsd

/etc/init.d/apcupsd start

et voici comment accèder aux infos de l'onduleur :

apcaccess

voici le genre d'informations que l'on obtient (ici, l'onduleur branché au zotac)

APC      : 001,043,1052
DATE     : Mon Jan 04 15:35:11 CET 2010
HOSTNAME : zotac
VERSION  : 3.14.6 (16 May 2009) debian
UPSNAME  : zotac
CABLE    : USB Cable
MODEL    : Back-UPS BR  800 
UPSMODE  : Stand Alone
STARTTIME: Mon Jan 04 15:35:10 CET 2010
STATUS   : ONLINE 
LINEV    : 222.0 Volts
LOADPCT  :  42.0 Percent Load Capacity
BCHARGE  : 100.0 Percent
TIMELEFT :  19.0 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 0 Seconds
OUTPUTV  : 230.0 Volts
SENSE    : Medium
DWAKE    : 000 Seconds
DSHUTD   : 000 Seconds
LOTRANS  : 194.0 Volts
HITRANS  : 264.0 Volts
RETPCT   : 000.0 Percent
ITEMP    : 29.2 C Internal
ALARMDEL : Always
BATTV    : 27.1 Volts
LINEFREQ : 50.0 Hz
LASTXFER : No transfers since turnon
NUMXFERS : 0
TONBATT  : 0 seconds
CUMONBATT: 0 seconds
XOFFBATT : N/A
SELFTEST : NO
STATFLAG : 0x07000008 Status Flag
SERIALNO : NB0730022333  
BATTDATE : 2001-09-25
NOMOUTV  : 230 Volts
NOMINV   : 230 Volts
NOMBATTV :  24.0 Volts
NOMPOWER : 540 Watts
FIRMWARE : 9.o4 .I USB FW:o4 
APCMODEL : Back-UPS BR  800 
END APC  : Mon Jan 04 15:35:14 CET 2010

on obtient notamment la température interne de l'onduleur (ITEMP) et le temps restant sur la batterie si coupure (TIMELEFT), la charge sur l'onduleur (LOADPCT) et la charge de la batterie (BCHARGE)

Ici, vous voyez que j'ai 42% de charge électrique, et 19 minutes de courant dispo, car j'ai branché également d'autres appareils important sur mon onduleur.

Il y a notamment le switch réseau, mon ordi principal avec une carte graphique "delamorkitue" (trèès gourmande en courant) avec son écran 24" et ma chaine hifi qui me sert également de réveil matin (ben oui, en cas de coupure la nuit, par d'alarme le matin :D )

En ayant branché juste le zotac sur l'onduleur, le temps passe à ~75 minutes.
A coté, mon routeur qui est tout seul sur son onduleur (avec la freebox quand meme) prend 4% de la capacité, ce qui laisse 70mn ;) )

Si on a renseigné une ip sur laquelle écouter (ou 0.0.0.0) on peut accéder depuis le réseau aux infos, depuis une autre machine.
Pour ce faire, on peut taper la commande

apcaccess status ip_de_la_machine

par exemple, j'ai également un onduleur sur mon routeur, donc pour accèder aux infos, je tape

apcaccess status 192.168.0.1

Maintenant que tout marche bien, on va configurer une dernière chose, les alertes par email.
Toujours dans le dossier /etc/apcupsd, on trouve plusieurs fichiers, qu'on va devoir éditer:

changeme
## fichier appelé lorsque la batterie est naze et a besoin d'être remplacée

commfailure
## fichier appelé lors d'une perte de connexion entre la machine et l'onduleur (par exemple, si vous avez débranché le cable usb sans faire exprès... :D )

commok
## fichier appelé lorsque la liaison avec l'onduleur est rétablie

offbattery
## fichier appelé lorsqu'il y a une coupure de courant

onbattery
## fichier appelé lorque le courant est rétabli après une coupure

Dans chacun de ces fichiers, la structure est la meme.
La ligne importante est: SYSADMIN=root
root ètant l'adresse email à laquelle le mail sera envoyé.
Il est d'ailleurs d'avoir installé auparavant un postfix, ou exim, ou tout autre script permettant d'envoyer un mail
On peut d'ailleurs appliquer des changements un peu plus approfondis à ces fichiers, vu que ce sont des scripts shell. On peut donc leur faire faire ce que l'on veut. ;)

Voila, ça fait pour moins un an et demi que j'ai un onduleur apc sur mon routeur, géré par apcupsd, et jamais de problème.
Il y a eu pas mal de coupures électriques,mais jamais plus d'une demi-heure, donc jamais d'extinction de machine.