On 2022-12-22 05:47, Rafael Reinoso via Nut-upsuser wrote:
I do not know much about NUT, but after some Googling, one idea I have is to in /etc/nut/upsmon.conf on client change to this

|NOTIFYCMD "/etc/nut/shutdown_script.sh" NOTIFYFLAG ONBATT EXEC |

And then in /etc/nut/shutdown_script.sh have something like this


Hi Raffe, I had a very similar setup to this for a long time until I recently changed it; I will describe what I used to do and why I don't set a timer like this anymore.

In /etc/ups/upsmon.conf (my system is Fedora) I captured three events:
   NOTIFYFLAG ONLINE   SYSLOG+EXEC
   NOTIFYFLAG ONBATT   SYSLOG+EXEC
   NOTIFYFLAG LOWBATT  SYSLOG+EXEC
   NOTIFYCMD /usr/sbin/upssched

The key thing here is I am not calling a bash script directly with NOTIFYCMD, but delegating it to the built in upssched process which has timer functionality (and is packaged with nut in Fedora).

In /etc/ups/upssched.conf, the key options are:
   CMDSCRIPT /usr/local/bin/upsmon-execscript.sh
   AT ONBATT * START-TIMER shutdown_onbatt 600
   AT ONLINE * CANCEL-TIMER shutdown_onbatt

As you can see it starts a 10 minute timer, and cancels the timer if mains power is restored. The bash script is similar to yours, but benefits from not having to do any time management of its own or count how long it has been running. upssched does that for you, and simply calls your script when the listed events occur and with the timer of your choosing.

Here is the problem with this approach in general:
 - what happens if I boot my server while already on battery, and
   the battery is low?  My script won't do anything for 10 minutes
 - what happens if the power repeatedly cycles on/off/on/off?
   10 more minutes are granted every time, which again leaves you
   in a dangerous situation

My current approach is to have my server turn off when the UPS hits 40% battery. I have redefined the "lowbatt" signal to a very comfortable 40%, so there is plenty of time to shutdown and still plenty of battery left for charging other things like my cellphone etc.

The way to accomplish this is in /etc/ups/ups.conf, under your ups configuration put:
   ignorelb
   override.battery.charge.low=40

This seems safer to me because it's based on the actual capacity remaining, and not an arbitrary timer.

Hope this helps, and happy new years!
Matt

_______________________________________________
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