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

Reply via email to