On Sun, Aug 18, 2024 at 07:00:52AM -0500, Dale wrote
> Walter Dnes wrote:
> >   My current manual hibernation script is...
> >
> > #!/bin/bash
> > sync
> > sudo /usr/sbin/hibernate

> The one thing I wish I could figure out how to set up, once power
> is lost, wait 2 minutes, maybe 5 minutes, then power off even if
> the battery still has lots of power left.

  I asked Mr. Google.  APCUPSD has an ONBATTERDELAY command that does
something only if the battery is in use (i.e. AC power is off) for at
least a certain specified length of time..

> P. S.  Your little script looks like something I'd come up with.  Simple
> but works.  ;-)  LOL 

  The solution for NUT appears to be to launch a countdown script rather
than do an immediate kill.  The examples I saw were exceedingly complex,
designed to handle all sorts of outlier cases.  Here's the barebones
simplest I think you can get away with.  It launches as soon as
ONBATTERY is detected.  It has a main loop that runs up to 60 seconds
(i.e. "sleep 1" x 60).  If it falls through the bottom of the loop
(counter = 0), it executes a "hibernate" (or "shutdown" if you prefer).
If if detects battery not in use (i.e. AC power back on) before
60 seconds, it'll exit entirely.  ***WARNING*** I HAVE NOT TESTED THIS
CODE.  I don't have a machine with a UPS running NUT

###################################################

in /etc/nut/upsmon.conf on client change to this

NOTIFYCMD "/etc/nut/countdown"
NOTIFYFLAG ONBATT EXEC

/etc/nut/countdown looks like so (counter = 60 ==> 60 seconds)

###################################################

#!/bin/bash
counter=60

while [ ${counter} -gt 0 ]
do
   output=$(upsc qnapups@192.168.222.252 ups.status)
   if echo "$output" | grep -q "OB"
   then
      sleep 1
      counter--
   else
      exit
   fi
done
/usr/sbin/hibernate

###################################################

NOTES:
* status output may change between versions
* adjust IP address as appropriate for your system
* make sure to mark the script executable
* you may have to set up and invoke sudo for "hibernate"
  or "shutdown" if the NUT daemon is not root

-- 
There are 2 types of people
1) Those who can extrapolate from incomplete data

Reply via email to