On Sat, 8 Aug 2020, Phil Stracchino wrote:
(Actually, I wish I could set it by *low runtime*, not low charge. What
I'd really like to be able to do is tell it, "Shut down these
non-essential servers if we've been on battery power longer than five
minutes. Shut down *everything* if remaining runtime drops below five
minutes." But I don't see any way to do that without writing the code
myself.)
I've done the essentials of this by configuring upsmon differently on
essential and non-essential servers, and by using upssched.conf.
Here are some of the things you can do with upssched:
AT COMMBAD tripp@localhost START-TIMER upsreset 10
AT COMMOK tripp@localhost CANCEL-TIMER upsreset
AT ONBATT * EXECUTE sms-onbatt
AT ONLINE * EXECUTE sms-online
Not what you want, just illustrating the tools that can be scripted.
Here is a snippet from upssched-cmd:
case $1 in
upsreset)
logger -t upssched-cmd "The UPS has been gone for awhile,
resetting"
echo "$TS" "NOCOMM" >>$LOG
;;
sms-onbatt)
logger -t upssched-cmd "Sending OnBattery SMS"
echo "$TS" "SMS" \
"The Gathman Server has lost power and is on
battery.">>$LOG
;;
sms-online)
logger -t upssched-cmd "Sending OnLine SMS"
echo "$TS" "SMS" \
"Power has been restored to the Gathman Server." >>$LOG
;;
*)
logger -t upssched-cmd "Unrecognized command: $1"
;;
esac
The $LOG file is watched (via inotify) by a process with different
privileges than nut. It sends sms and resets the braindead USB on UPS.
Also, early shutdown is easily accomplished for your non-essential
servers:
AT ONBATT * START-TIMER early-shutdown 2000
AT ONLINE * CANCEL-TIMER early-shutdown
AT ONBATT * EXECUTE onbatt
AT ONLINE * EXECUTE online
Late shutdown is done by setting LOW BATTERY shutdown to only set a timer,
which then starts the shutdown.
AT LOWBATT * START-TIMER late-shutdown 300
In ups.conf, you can override what the ups says for upsmon purposes:
[apc]
driver = usbhid-ups
port = auto
serial = "4B1717P20965"
desc = "Back-UPS XS 1300G"
vendorid = 051d
override.battery.runtime.low = 300
override.battery.charge.low = 15
ignorelb
In upsmon.conf, you add EXEC flag to pass the events to upssched:
NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
_______________________________________________
Nut-upsuser mailing list
Nut-upsuser@alioth-lists.debian.net
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser