<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class=""><div class="">Hello, group. I hope this works. Question from a confused newbie...</div><div class=""><br class=""></div><div class="">I’ve been banging my head over this. As far as I can tell I’ve done everything as the instructions say, but one thing isn’t working. There must be something simple and basic I’m doing wrong, but just don’t see it.</div><div class=""><br class=""></div><div class="">About my setup. I have a CyberPower UPS serving as battery backup for a few “essential” things. It protects all of my internet connection boxes (fiber interface, WiFi, a switch, our VOIP phone), a couple of Raspberry Pis, and a Western Digital NAS (disk server).</div><div class=""><br class=""></div><div class="">Since the NAS is the least critical device and the biggest power drain, I’d like to shut it down relatively soon when the UPS goes on battery.</div><div class=""><br class=""></div><div class="">I have a Raspberry Pi 2 running a NUT server (and client for upsmon), using a USB connection to the UPS. The NAS happily talks to the Pi’s NUT server, and notices when the UPS goes on battery. (Whether it actually shuts itself down on low battery remains to be seen, but that’s for another day. I’m not even sure it will honor a FSD.)</div><div class=""><br class=""></div><div class="">So, all seems to be working, EXCEPT upsmon isn’t calling my CMDSCRIPT when expected. See the following syslog snippets. When I unplug/plug the UPS, I see upsmon “on battery” and “on line power” entries (so upsmon got the events), but none of the logs expected from the /bin/upssched-cmd script. When I manually call the script, I <i class="">do</i><span class=""> get log entries.</span></div><div class=""><br class=""></div><div class="">Note that I don’t see the expected upssched.pipe and upssched.lock in /var/run/nut, though maybe those are transitory?</div><div class=""><br class=""></div><div class="">If anyone can see anything I’m missing I’d appreciate it.</div><div class=""><br class=""></div><div class="">Thanks!</div><div class=""><br class=""></div><div class=""><br class="">When unplugging/plugging the UPS I see in the log:<br class=""><br class="">> Apr 28 14:08:45 raspberrypi upsmon[558]: UPS usbhid@localhost on battery<br class="">> Apr 28 14:09:45 raspberrypi upsmon[558]: UPS usbhid@localhost on line power<br class=""><br class="">And if I manually invoke "/bin/upssched-cmd test” I see:<br class="">> Apr 28 14:15:46 raspberrypi upssched-cmd: This is a test: test<br class="">> Apr 28 14:15:46 raspberrypi upssched-cmd: root<br class="">> Apr 28 14:15:46 raspberrypi upssched-cmd: Unrecognized command: test<br class=""><br class="">So it's clear that upsmon is seeing events from the UPS, but isn't invoking upssched-cmd.<br class="">Note that I also don't see a WALL message, but maybe that's a Rasbperry thing. (The<br class="">wall command doesn't work, either.)<br class=""><br class=""><br class="">Versions of things:<br class="">Distributor ID:<span class="Apple-tab-span" style="white-space: pre;">        </span>Raspbian<br class="">Description:<span class="Apple-tab-span" style="white-space: pre;"> </span>Raspbian GNU/Linux 10 (buster)<br class="">Release:<span class="Apple-tab-span" style="white-space: pre;">       </span>10<br class="">Codename:<span class="Apple-tab-span" style="white-space: pre;">  </span>buster<br class="">Linux raspberrypi 5.10.63-v7+ #1496 SMP Wed Dec 1 15:58:11 GMT 2021 armv7l GNU/Linux<br class="">ii  nut                                   2.7.4-8                                 all          network UPS tools<br class="">ii  nut-cgi                               2.7.4-8                                 armhf        network UPS tools<br class="">ii  nut-client                            2.7.4-8                                 armhf        network UPS tools<br class="">ii  nut-server                            2.7.4-8                                 armhf        network UPS tools<br class=""><br class=""><br class="">Content of upsmon.conf: (I probably should have called it something other than “usbhid,” but that’s working for now.)<br class=""><br class="">> RUN_AS_USER upsmon<br class="">> MONITOR usbhid@localhost 1 upsmon_master <thepassword> master<br class="">> MINSUPPLIES 1<br class="">> SHUTDOWNCMD "/sbin/shutdown -h +0"<br class="">> POLLFREQ 5<br class="">> POLLFREQALERT 5<br class="">> HOSTSYNC 15<br class="">> DEADTIME 15<br class="">> POWERDOWNFLAG /etc/killpower<br class="">> NOTIFYFLAG ONLINE<span class="Apple-tab-span" style="white-space: pre;">     </span>SYSLOG+WALL+EXEC<br class="">> NOTIFYFLAG ONBATT<span class="Apple-tab-span" style="white-space: pre;">       </span>SYSLOG+WALL+EXEC<br class="">> NOTIFYFLAG LOWBATT<span class="Apple-tab-span" style="white-space: pre;">      </span>SYSLOG+WALL+EXEC<br class="">> NOTIFYFLAG REPLBATT<span class="Apple-tab-span" style="white-space: pre;">     </span>SYSLOG+WALL+EXEC<br class="">> RBWARNTIME 43200<br class="">> NOCOMMWARNTIME 300<br class="">> FINALDELAY 5<br class=""><br class="">Content of upssched.conf:<br class=""><br class="">> Apr 28 14:09:45 raspberrypi upsmon[558]: UPS usbhid@localhost on line power<br class="">> CMDSCRIPT /bin/upssched-cmd<br class="">> PIPEFN /var/run/nut/upssched.pipe<br class="">> LOCKFN /var/run/nut/upssched.lock<br class="">> AT ONBATT * START-TIMER onbatt 30<br class="">> AT ONLINE * CANCEL-TIMER onbatt online<br class="">> AT LOWBAT * EXECUTE killnas<br class="">> AT SHUTDOWN * EXECUTE powerdown</div><div class="">Note: I tried changing the “AT ONBATT” to just do "EXECUTE test” to skip the timer, to no avail.<br class=""><br class="">Content of upsd.users:<br class="">> [upsmon_master]<br class="">>         password = <XXX><br class="">>         actions = SET,FSD<br class="">>         instcmds = ALL<br class="">>         upsmon master<br class="">> [upsmon]<br class="">>         password = <XXX><br class="">>         upsmon slave<br class="">> [admin]<br class="">>         password = <XXX><br class="">>         actions = SET,FSD<br class="">>         instcmds = ALL<br class="">>         upsmon master<br class=""><br class="">Content of nut.conf:<br class="">> MODE=netserver<br class=""><br class="">/bin/upssched-cmd:<br class="">> #! /bin/sh<br class="">> <br class="">> logger -t upssched-cmd "This is a test: $1"<br class="">> logger -t upssched-cmd `whoami`<br class="">> <br class="">> case $1 in<br class="">> <span class="Apple-tab-span" style="white-space: pre;">   </span>onbatt)<br class="">> <span class="Apple-tab-span" style="white-space: pre;">            </span>logger -t upssched-cmd "UPS running on battery"<br class="">> <span class="Apple-tab-span" style="white-space: pre;">          </span>;;<br class="">> <span class="Apple-tab-span" style="white-space: pre;"> </span>killnas)<br class="">> <span class="Apple-tab-span" style="white-space: pre;">           </span>logger -t upssched-cmd "Time to shut down NAS"<br class="">> <span class="Apple-tab-span" style="white-space: pre;">           </span>/usr/sbin/upsmon -c fsd<br class="">> <span class="Apple-tab-span" style="white-space: pre;">            </span>;;<br class="">> <span class="Apple-tab-span" style="white-space: pre;"> </span>earlyshutdown)<br class="">> <span class="Apple-tab-span" style="white-space: pre;">             </span>logger -t upssched-cmd "UPS on battery too long, early shutdown"<br class="">> <span class="Apple-tab-span" style="white-space: pre;">         </span>/usr/sbin/upsmon -c fsd<br class="">> <span class="Apple-tab-span" style="white-space: pre;">            </span>;;<br class="">> <span class="Apple-tab-span" style="white-space: pre;"> </span>shutdowncritical)<br class="">> <span class="Apple-tab-span" style="white-space: pre;">          </span>logger -t upssched-cmd "UPS on battery critical, forced shutdown"<br class="">> <span class="Apple-tab-span" style="white-space: pre;">                </span>/usr/sbin/upsmon -c fsd<br class="">> <span class="Apple-tab-span" style="white-space: pre;">            </span>;;<br class="">> <span class="Apple-tab-span" style="white-space: pre;"> </span>upsgone)<br class="">> <span class="Apple-tab-span" style="white-space: pre;">           </span>logger -t upssched-cmd "The UPS has been gone for awhile"<br class="">> <span class="Apple-tab-span" style="white-space: pre;">                </span>;;<br class="">> <span class="Apple-tab-span" style="white-space: pre;"> </span>*)<br class="">> <span class="Apple-tab-span" style="white-space: pre;">         </span>logger -t upssched-cmd "Unrecognized command: $1"<br class="">> <span class="Apple-tab-span" style="white-space: pre;">                </span>;;<br class="">> esac<br class="">> <br class=""><br class=""><br class="">Existing directories and files:<br class="">> drwxr-xr-x 13 root root 4096 Apr 27 21:13 /var<br class="">> lrwxrwxrwx 1 root root 4 Dec  2  2020 /var/run -> /run<br class="">> drwxrwx--- 2 root nut 120 Apr 27 21:19 /run/nut<br class="">> -rw-r--r-- 1 nut  nut  4 Apr 27 21:19 /var/run/nut/upsd.pid<br class="">> -rw-r--r-- 1 root root 4 Apr 27 21:19 /var/run/nut/upsmon.pid<br class="">> srw-rw---- 1 nut  nut  0 Apr 27 21:19 /var/run/nut/usbhid-ups-usbhid<br class="">> -rw-r--r-- 1 nut  nut  4 Apr 27 21:19 /var/run/nut/usbhid-ups-usbhid.pid<br class="">> -rwxr-xr-x 1 root root 986 Apr 27 14:11 /bin/upssched-cmd<br class=""><br class="">Processes running:<br class="">> root     root     upsmon          /lib/nut/upsmon<br class="">> upsmon   nut      upsmon          /lib/nut/upsmon<br class=""><br class=""><br class="">Status:<br class="">root@raspberrypi:/etc/nut# service nut-server status<br class="">● nut-server.service - Network UPS Tools - power devices information server<br class="">   Loaded: loaded (/lib/systemd/system/nut-server.service; enabled; vendor preset: enabled)<br class="">   Active: active (running) since Thu 2023-04-27 21:19:44 CDT; 16h ago<br class="">  Process: 428 ExecStart=/sbin/upsd (code=exited, status=0/SUCCESS)<br class=""> Main PID: 446 (upsd)<br class="">    Tasks: 1 (limit: 1935)<br class="">   CGroup: /system.slice/nut-server.service<br class="">           └─446 /lib/nut/upsd<br class=""><br class="">Apr 27 21:19:44 raspberrypi upsd[428]: fopen /var/run/nut/upsd.pid: No such file or directory<br class="">Apr 27 21:19:44 raspberrypi upsd[428]: listening on 0.0.0.0 port 3493<br class="">Apr 27 21:19:44 raspberrypi upsd[428]: not listening on 127.0.0.1 port 3493<br class="">Apr 27 21:19:44 raspberrypi upsd[428]: listening on 0.0.0.0 port 3493<br class="">Apr 27 21:19:44 raspberrypi upsd[428]: not listening on 127.0.0.1 port 3493<br class="">Apr 27 21:19:44 raspberrypi upsd[428]: Connected to UPS [usbhid]: usbhid-ups-usbhid<br class="">Apr 27 21:19:44 raspberrypi upsd[428]: Connected to UPS [usbhid]: usbhid-ups-usbhid<br class="">Apr 27 21:19:44 raspberrypi upsd[446]: Startup successful<br class="">Apr 27 21:19:44 raspberrypi systemd[1]: Started Network UPS Tools - power devices information server.<br class="">Apr 27 21:19:46 raspberrypi upsd[446]: User <a href="mailto:upsmon_master@127.0.0.1" class="">upsmon_master@127.0.0.1</a> logged into UPS [usbhid]<br class=""><br class="">> root@raspberrypi:/etc/nut# sudo service nut-client status<br class="">> <br class="">> Status:<br class="">> root@raspberrypi:/etc/nut# sudo service nut-client status<br class="">> ● nut-monitor.service - Network UPS Tools - power device monitor and shutdown controller<br class="">>    Loaded: loaded (/lib/systemd/system/nut-monitor.service; enabled; vendor preset: enabled)<br class="">>    Active: active (running) since Thu 2023-04-27 21:19:46 CDT; 13h ago<br class="">>   Process: 544 ExecStart=/sbin/upsmon (code=exited, status=0/SUCCESS)<br class="">>  Main PID: 558 (upsmon)<br class="">>     Tasks: 2 (limit: 1935)<br class="">>    CGroup: /system.slice/nut-monitor.service<br class="">>            ├─556 /lib/nut/upsmon<br class="">>            └─558 /lib/nut/upsmon<br class="">> <br class="">> Apr 27 21:19:46 raspberrypi upsmon[544]: fopen /var/run/nut/upsmon.pid: No such file or directory<br class="">> Apr 27 21:19:46 raspberrypi upsmon[544]: UPS: usbhid@localhost (master) (power value 1)<br class="">> Apr 27 21:19:46 raspberrypi upsmon[544]: Using power down flag file /etc/killpower<br class="">> Apr 27 21:19:46 raspberrypi upsmon[556]: Startup successful<br class="">> Apr 27 21:19:46 raspberrypi upsmon[558]: Init SSL without certificate database<br class="">> Apr 27 21:19:46 raspberrypi systemd[1]: nut-monitor.service: Supervising process 558 which is not our child. We'<br class="">> Apr 27 21:19:46 raspberrypi systemd[1]: Started Network UPS Tools - power device monitor and shutdown controller<br class="">> Apr 27 21:54:33 raspberrypi upsmon[558]: UPS usbhid@localhost on battery<br class="">> Apr 27 22:01:33 raspberrypi upsmon[558]: UPS usbhid@localhost on line power<br class="">> Apr 28 09:41:11 raspberrypi upsmon[558]: Reloading configuration<br class="">> <br class="">> ● nut-monitor.service - Network UPS Tools - power device monitor and shutdown controller<br class="">>    Loaded: loaded (/lib/systemd/system/nut-monitor.service; enabled; vendor preset: enabled)<br class="">>    Active: active (running) since Thu 2023-04-27 21:19:46 CDT; 13h ago<br class="">>   Process: 544 ExecStart=/sbin/upsmon (code=exited, status=0/SUCCESS)<br class="">>  Main PID: 558 (upsmon)<br class="">>     Tasks: 2 (limit: 1935)<br class="">>    CGroup: /system.slice/nut-monitor.service<br class="">>            ├─556 /lib/nut/upsmon<br class="">>            └─558 /lib/nut/upsmon<br class="">> <br class="">> Apr 27 21:19:46 raspberrypi upsmon[544]: fopen /var/run/nut/upsmon.pid: No such file or directory<br class="">> Apr 27 21:19:46 raspberrypi upsmon[544]: UPS: usbhid@localhost (master) (power value 1)<br class="">> Apr 27 21:19:46 raspberrypi upsmon[544]: Using power down flag file /etc/killpower<br class="">> Apr 27 21:19:46 raspberrypi upsmon[556]: Startup successful<br class="">> Apr 27 21:19:46 raspberrypi upsmon[558]: Init SSL without certificate database<br class="">> Apr 27 21:19:46 raspberrypi systemd[1]: nut-monitor.service: Supervising process 558 which is not our child. We'<br class="">> Apr 27 21:19:46 raspberrypi systemd[1]: Started Network UPS Tools - power device monitor and shutdown controller<br class="">> Apr 27 21:54:33 raspberrypi upsmon[558]: UPS usbhid@localhost on battery<br class="">> Apr 27 22:01:33 raspberrypi upsmon[558]: UPS usbhid@localhost on line power<br class="">> Apr 28 09:41:11 raspberrypi upsmon[558]: Reloading configuration</div></div></div></body></html>