Você pode tentar usar upssched.conf(5)
para executar seu próprio script em um timer depois que um evento for disparado.
Um upssched.conf
básico seria algo assim:
CMDSCRIPT /bin/your-script.sh
AT ONBATT * EXECUTE emailonbatt
AT ONBATT * START-TIMER upsonbatt 300
AT ONLINE * EXECUTE emailonline
AT ONLINE * CANCEL-TIMER upsonbatt upsonline
Com isso, o NUT irá:
- Imediatamente após o no-break entrar em funcionamento, execute
/bin/your-script.sh emailwarn
. - Cinco minutos após o no-break entrar em funcionamento, execute
/bin/your-script.sh upsonbatt
. - Imediatamente após o no-break recuperar a energia da linha, execute
/bin/your-script.sh upsonline
. - Imediatamente após o no-break recuperar a energia da linha, cancele também o temporizador
upsonbatt
se ainda estiver ativo. Caso contrário, execute/bin/your-script.sh upsonline
.
O script pode ser algo como:
#!/bin/bash
case $1 in
emailonbatt)
mail -s "UPS on battery power" [email protected]
;;
emailonline)
mail -s "UPS on line power" [email protected]
;;
upsonbatt)
ssh root@nas shutdown -h +0
;;
upsonline)
etherwake 01:23:45:AB:CD:EF
;;
esac
A sintaxe da instrução AT pode ser encontrada na página man de upssched.conf(5)
, e os tipos de eventos de notificação disponíveis podem ser encontrados na página man de upsmon(8)
.