l'Internet

Apprenez à configurer NUT (Network UPS Tools) sous Linux pour contrôler un onduleur

Network UPS Tools (NUT) est un programme complet pour les systèmes d’exploitation basés sur Unix et Linux pour administrer et gérer correctement une alimentation sans coupure (UPS) . La plupart des fabricants intègrent un logiciel capable de surveiller l’état de l’onduleur et d’envoyer des notifications par e-mail, il permet également au système de fonctionner en tant que « maître » de manière à ce que d’autres ordinateurs s’y connectent en tant qu’« esclaves » pour lire l’état de l’onduleur. Les équipements maître et esclave, lors de la lecture de l’état de l’onduleur, peuvent être configurés pour s’arrêter automatiquement en cas de panne de courant.

Ce manuel a pour but de configurer le programme NUT à partir de zéro sur un Raspberry Pi avec le système d’exploitation Raspbian . Le point fort de l’utilisation de ce système à la place d’un ordinateur est la faible consommation d’énergie et permet une grande configurabilité comme les alertes par e-mail. NUT permet également aux ordinateurs «esclaves» de se connecter pour lire leur état.

Installation

La première chose à faire est d’installer le programme :

sudo apt-get install nut

Modifier les fichiers de configuration

Une fois installé, il faut aller dans le répertoire /etc/nut/ où se trouvent tous les fichiers .conf pour procéder à sa configuration.

Nous avons testé cette configuration avec un  onduleur Salicru SPS SOHO + 1400VA . Ensuite nous allons mettre le contenu de nos fichiers pour que le Raspberry agisse en tant que professeur et envoie des notifications par email en cas de problème. Il suffit de les éditer en mode superutilisateur (root) avec notre éditeur de fichiers préféré (vi, vim, nano ou autre).

Fichier Nut.conf

MODE=standalone

Fichier ups.conf

[salicru] driver = blazer_usb
port = auto
desc = "SAI Salicru"

Fichier upsd.conf

MAXAGE 15
MAXCONN 1024
LISTEN 127.0.0.1 3493
LISTEN ::1 3493

Fichier Upsmon.conf

MONITOR salicru@localhost 1 nonmaster contraseña master

MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
NOTIFYCMD /bin/upssched-cmd
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower

NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+WALL+EXEC
NOTIFYFLAG COMMBAD SYSLOG+WALL+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC
NOTIFYFLAG REPLBATT SYSLOG+WALL+EXEC
NOTIFYFLAG NOCOMM SYSLOG+WALL+EXEC
NOTIFYFLAG NOPARENT SYSLOG+WALL+EXEC

RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5

Fichier Upsd.users

[nonmaster] password = contraseña
actions = set
instcmds = ALL
upsmon master

Fichier Upssched.conf

CMDSCRIPT /bin/upssched-cmd
PIPEFN /var/run/nut/upssched/upssched.pipe
LOCKFN /var/run/nut/upssched/upssched.lock

AT COMMOK * EXECUTE notify
AT COMMBAD * EXECUTE notify
AT REPLBATT * EXECUTE notify
AT NOCOMM * EXECUTE notify
AT FSD * EXECUTE forced-shutdown
AT NOPARENT * EXECUTE notify
AT SHUTDOWN * EXECUTE notify
AT ONLINE * CANCEL-TIMER shutdown
AT ONLINE * EXECUTE resume
AT ONBATT * START-TIMER shutdown 60000
AT ONBATT * EXECUTE shutdown-warning
AT LOWBATT * START-TIMER shutdown
AT LOWBATT * EXECUTE shutdown-warning

Jusqu’ici arriverait la configuration des fichiers fondamentaux pour que le système d’exploitation reconnaisse correctement l’UPS et commence à fonctionner. Cependant, il existe un fichier supplémentaire appelé upssched-cmd situé dans / bin / qui est chargé d’effectuer les actions configurées dans les fichiers précédents, telles que l’exécution de l’arrêt du serveur au cas où nous aurions une batterie faible ou notifier dans le syslog les différents événements qui se produisent dans l’UPS.

Le chemin de ce fichier (ce qui est essentiel pour une bonne configuration) est dans /bin/upssched-cmd, nous procédons à son édition avec notre éditeur de fichier préféré avec le contenu suivant :

Fichier upssched-cmd

#!/bin/sh

case "${NOTIFYTYPE}" in
ONLINE)
_notifymessage="UPS ${UPSNAME} - Equipo funcionando con la luz electrica";
echo ${_notifymessage} | mail -s "SAI" [email protected];;
ONBATT)
_notifymessage="UPS ${UPSNAME} - Corte en el suministro electrico, el sistema funciona con bateria. CUIDADO";
echo ${_notifymessage} | mail -s "SAI" [email protected];;
LOWBATT)
_notifymessage="UPS ${UPSNAME} - Bateria baja";
echo ${_notifymessage} | mail -s "SAI" [email protected];;
FSD)
_notifymessage="UPS ${UPSNAME}: - Forzando el apagado del equipo";
echo ${_notifymessage} | mail -s "SAI" [email protected];;
COMMOK)
_notifymessage="La comunicacion con el UPS ${UPSNAME} se ha establecido correctamente";
echo ${_notifymessage} | mail -s "SAI" [email protected];;
COMMBAD)
_notifymessage="La comunicacion con el UPS ${UPSNAME} se ha PERDIDO, ERROR.";
echo ${_notifymessage} | mail -s "SAI" [email protected];
upsdrvctl start salicru;;
SHUTDOWN)
_notifymessage="Finalizando sesion y apagando el equipo.";
echo ${_notifymessage} | mail -s "SAI" [email protected];;
REPLBATT)
_notifymessage="UPS ${UPSNAME} - The battery needs to be replaced!";
echo ${_notifymessage} | mail -s "SAI" [email protected];;
NOCOMM)
_notifymessage="UPS ${UPSNAME} - El UPS no esta disponible";
echo ${_notifymessage} | mail -s "SAI" [email protected];
upsdrvctl start salicru;;
NOPARENT)
_notifymessage="No se puede apagar automaticamente el servidor, se necesita
intervencion del administrador.";
echo ${_notifymessage} | mail -s "SAI" [email protected];;
esac

case "${1}" in
shutdown-warning)

_message="${_notifymessage}.
Apagado inminente en ${_shutdowntimer} segundos.";;

shutdown)
_message="${_notifymessage}.
Se inicia el apagado del equipo.";
shutdown -p now ${_message};;

resume)
_message="${_notifymessage}.
Apagado cancelado.";;

forced-shutdown)
_message="${_notifymessage}.
Apagado forzado inminente en 100 minutos.";
shutdown -h 100;;

notify)
_message="${_notifymessage}";;

*)
_message="Unknown command: ${1}";
esac

# Write message to syslo
logger -t upssched-cmd "${_message}"

Vérifier le fonctionnement et consulter les journaux

Après avoir effectué ces actions, il est recommandé de redémarrer le système d’exploitation pour vérifier que tout fonctionne correctement. Il existe une commande très utile pour vérifier si les pilotes et le système dans Raspbian fonctionnent correctement :

upsdrvctl start salicru

Tous les journaux sont enregistrés dans syslog, nous pouvons donc faire une simple queue pour obtenir les dernières lignes d’informations système afin de détecter les problèmes de démarrage ou d’autres avertissements :

tail /var/log/syslog

Comme vous l’avez vu dans ce dernier fichier de configuration, nous avons utilisé le serveur SMTP que nous avons installé dans Raspbian pour envoyer les notifications par email.

Si nous utilisons des clients NUT sur les ordinateurs esclaves tels que WinNUT, nous pouvons lire l’état de l’onduleur et éteindre les différents ordinateurs. Cette configuration que nous proposons, nous l’avons testée et elle fonctionne correctement, cependant, il est possible que vous ayez un problème dû aux pilotes ou à d’autres raisons, nous vous invitons à commenter si vous rencontrez des problèmes et nous essaierons de vous aider en dehors.

Articles Similaires

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba