Apcupsd, es un programa que se instala como servicio tanto en linux como en windows, que nos permite recibir información del estado de nuestro SAI marca APC y actuar según lo que pase.

Detecta si nos quedamos sin conexión, sin batería, tiempos, voltajes, capacidad restantes del aparato y podemos configurarlo para actuar según lo que ocurra.  Pero al instalarlo, apareció la necesidad de configurar que si se queda en modo batería y después perdemos la conexión por red con el SAI, se proceda al apagado de la máquina. Pero dicha funcionalidad no está implementada.

Es simple. El demonio llama a un script, apccontrol(linux) apccontrol.bat(Windows). Es el que maneja qué hacer dependiendo de las señales recibidas. Es este a quien vamos a modificar un pelín. Las funciones onbattery, offbattery y  commfailure.

  1. Cuando recibamos la señal de estar en baterías, generaremos un fichero.

Windows:

:onbattery
%POPUP% “Power failure. Running on UPS batteries.”
echo onbattery.warn > c:\apcupsd\etc\onbattery.warn
GOTO :done

Linux

onbattery)
touch /tmp/onbattery.warn
echo “Power failure on UPS ${2}. Running on batteries.” | ${WALL}
;;

2. Al llegar la señal de pérdida de conexión, miramos si existe nuestro fichero onbattery.warn.  De ser así hacemos que se llame a la orden de apagado.

Windows

:commfailure
%POPUP% “Communications with UPS lost.”
DEL c:\apcupsd\etc\onbattery.warn
IF EXIST c:\apcupsd\etc\onbattery.warn GOTO :doshutdown
GOTO :done

Linux

commfailure)
echo “Warning communications lost with UPS ${2}” | ${WALL}if [ -f /tmp/onbattery.warn ] ; then
rm -f /tmp/onbattery.warn
${SHUTDOWN} -h now
fi
;;

3. Si se recibe la señal de que deja de estar sobre baterías y ya se ha recuperado el fallo eléctrico, deberemos borrar el fichero.

Windows

:offbattery
%POPUP% “Power has returned. No longer running on UPS batteries.”
DEL c:\apcupsd\etc\onbattery.warn
GOTO :done

Linux

offbattery)
rm -f /tmp/onbattery.warn
;;

Pues nada. Suerte y esperemos evitar que tengais que ir de noche al pdc u oficina  para apagar servidores a mano por culpa de no tener red.

;1