|
Hello,
I have a problem with upssched working in my NUT setup. upssched is not executing at all while running on battery. I'm trying to execute some shell scripts before the shutdown begins. I have 3 computers connected to a single UPS. There is a Debian (testing) connected to the UPS via USB, and NUT was installed using a standard Debian repo using apt-get. The two other boxes are Windows 10 Pro with no data connections to the UPS. I have cygwin installed on the Windows boxes and I've written a shell script to shell in and shutdown the Windows boxes. I had problems getting Windows NUT to work so I gave up and went with this model (was a netserver/netclient setup, now I'm standalone with upssched). It seems I'm really close but I need to figure out the upssched issue. I appreciate the support and patience as I see many variances of this problem come up on the mailing list. I don't see my particular issue and I've checked the other threads and confirmed those particular fixes are implemented in my setup. I saw one thread discussing SELinux. I do not have SELinux but I do have AppArmor running. I don't see any indication in /var/log/syslog that AppArmor is blocking execution. I also don't see any NUT specific config for AppArmor. I run a pretty standard, out-of-the-box AppArmor setup. I see nothing in /var/log/syslog when the low battery condition hits and we just go straight to a shutdown of the Debian box while nothing happens on the windows boxes, which tells me that it's completely skipping upssched. /etc/nut/upssched-cmd runs as expected when called via sudo manually. Below are my NUT config files and some other (hopefully) useful information. NUT version: $ upsd -V Network UPS Tools upsd 2.7.4 nut.conf: $ grep -Ev "^(#|\s*$)" /etc/nut/nut.conf MODE=standalone ups.conf: $ grep -Ev "^(#|\s*$)" /etc/nut/ups.conf [myups1] driver = usbhid-ups port = auto vendorid = 0764 desc = "CyberPower 1350VA/CP1500AVR/CST135XLU on rockenfield" pollinterval = 10 ignorelb override.battery.charge.low = 80 override.battery.charge.warning = 90 override.battery.runtime.low = 900 upsd.conf: $ grep -Ev "^(#|\s*$)" /etc/nut/upsd.conf LISTEN 192.168.123.1 3493 LISTEN 127.0.0.1 3493 upsd.users: $ grep -Ev "^(#|\s*$)" /etc/nut/upsd.users [nutmaster] password = pass upsmon master [nutslave] password = pass upsmon slave upsmon.conf: $ grep -Ev "^(#|\s*$)" /etc/nut/upsmon.conf RUN_AS_USER nut MONITOR myups1@localhost:3493 1 nutmaster pass master MINSUPPLIES 1 SHUTDOWNCMD "/sbin/shutdown --poweroff +0" NOTIFYCMD /sbin/upssched POLLFREQ 10 POLLFREQALERT 5 HOSTSYNC 15 DEADTIME 15 POWERDOWNFLAG /etc/killpower NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC RBWARNTIME 43200 NOCOMMWARNTIME 300 FINALDELAY 30 CERTVERIFY 0 FORCESSL 0 ----- upssched.conf: $ grep -Ev "^(#|\s*$)" /etc/nut/upssched.conf CMDSCRIPT /etc/nut/upssched-cmd PIPEFN /etc/nut/upssched.pipe LOCKFN /etc/nut/upssched.lock AT ONBATT myups1 EXECUTE onbatt AT LOWBATT myups1 EXECUTE lowbatt ----- upssched-cmd: $ cat /etc/nut/upssched-cmd #!/bin/sh # # This script should be called by upssched via the CMDSCRIPT directive. # # Here is a quick example to show how to handle a bunch of possible # timer names with the help of the case structure. # # This script may be replaced with another program without harm. # # The first argument passed to your CMDSCRIPT is the name of the timer # from your AT lines. OPTION="$1" SCRIPT="$0" logger -t $SCRIPT "Script called with arg $OPTION" case $OPTION in lowbatt) logger -t $SCRIPT "UPS Low Battery: Begin shutting down clients" /root/bin/remote-shutdown-nas sleep 1 /root/bin/remote-shutdown-win 192.168.123.2 sleep 1 /root/bin/remote-shutdown-win 192.168.123.3 sleep 20 ;; onbatt) logger -t $SCRIPT "UPS on battery" ;; upsgone) logger -t $SCRIPT "The UPS has been gone for awhile" ;; *) logger -t $SCRIPT "Unrecognized arg: $OPTION" ;; esac exit 0 UPS communications are working: $ upsc myups1 Init SSL without certificate database battery.charge: 100 battery.charge.low: 80 battery.charge.warning: 90 battery.mfr.date: CPS battery.runtime: 1350 battery.runtime.low: 900 battery.type: PbAcid battery.voltage: 24.0 battery.voltage.nominal: 24 device.mfr: CPS device.model: CST135XLU device.serial: CR7GT2000910 device.type: ups driver.flag.ignorelb: enabled driver.name: usbhid-ups driver.parameter.pollfreq: 30 driver.parameter.pollinterval: 10 driver.parameter.port: auto driver.parameter.synchronous: no driver.parameter.vendorid: 0764 driver.version: 2.7.4 driver.version.data: CyberPower HID 0.4 driver.version.internal: 0.41 input.voltage: 119.0 input.voltage.nominal: 120 output.voltage: 136.0 ups.beeper.status: enabled ups.delay.shutdown: 20 ups.delay.start: 30 ups.load: 26 ups.mfr: CPS ups.model: CST135XLU ups.productid: 0501 ups.realpower.nominal: 810 ups.serial: CR7GT2000910 ups.status: OL ups.test.result: No test initiated ups.timer.shutdown: -60 ups.timer.start: -60 ups.vendorid: 0764 Show file access: $ ll /etc/nut/ total 53,248 -rw-r----- 1 root nut 1,573 Mar 29 16:00 nut.conf -rw-r----- 1 root nut 4,892 Mar 29 15:47 ups.conf -rw-r----- 1 root nut 4,644 Dec 7 2017 upsd.conf -rw-r----- 1 root nut 2,234 Mar 28 14:55 upsd.users -rw-r----- 1 root nut 15,352 Mar 29 21:32 upsmon.conf -rw-r----- 1 root nut 4,099 Mar 30 08:45 upssched.conf -rwxr-x--- 1 root nut 986 Mar 30 14:58 upssched-cmd* Verify nut user can write to the dir: $ sudo --user nut touch /etc/nut/test $ ll /etc/nut/ total 53,248 -rw-r----- 1 root nut 1,573 Mar 29 16:00 nut.conf -rw-r--r-- 1 nut nut 0 Mar 30 15:49 test -rw-r----- 1 root nut 4,892 Mar 29 15:47 ups.conf -rw-r----- 1 root nut 4,644 Dec 7 2017 upsd.conf -rw-r----- 1 root nut 2,234 Mar 28 14:55 upsd.users -rw-r----- 1 root nut 15,352 Mar 29 21:32 upsmon.conf -rw-r----- 1 root nut 4,099 Mar 30 08:45 upssched.conf -rwxr-x--- 1 root nut 986 Mar 30 14:58 upssched-cmd* Verify shell script executes as nut user: $ date; sudo --user nut /etc/nut/upssched-cmd dude Sat 30 Mar 2019 03:50:56 PM PDT $ grep upssched /var/log/syslog | tail -2 Mar 30 15:50:56 rockenfield /etc/nut/upssched-cmd: Script called with arg dude Mar 30 15:50:56 rockenfield /etc/nut/upssched-cmd: Unrecognized arg: dude Any help is greatly appreciated. Thanks a lot! -MikeD |
_______________________________________________ Nut-upsuser mailing list [email protected] https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser
