[Nut-upsuser] NUT Windows port questions

Arnaud Quette aquette.dev at gmail.com
Thu Jan 5 08:42:45 UTC 2012


Hi Denis,

2012/1/4 Serov Denis <dns-srv at yandex.ru>

> Hello NUT Team!
>
> I've got some questions about NUT (Windows port), which I couldn't resolve
> by myself.
>
> I have a test environment that contains:
> 1. NUT network server (OS: Debian 6.0.3, x64, NUT 2.4.3)
> 2. Linux clients (OS: different, NUT 2.4.3, 2.6.1)
> 3. Windows clients (OS: Windows Standard Server Core 2008 R1 SP1, Windows
> 7 x64 Ultimate SP1, NUT-Installer-2.6.1-1.msi)
> 4. APC Back-UPS ES 550 connected to network server
>
> Currently, network server and Linux clients are working well. I can see
> UPS variables via "upsc" (server/clients), can shutdown slaves and masters
> via "upsmon -c fsd", no problem with timers and early shutdown script,
> etc...
>
> Now, I am trying to set the same configuration on Windows Server as on
> Linux clients and have no success. I use the following configuration (don't
> carry about credentials =):
>
> nut.conf
> MODE = netclient
>
> upsmon.conf
> RUN_AS_USER user
> MONITOR mainups at 192.168.10.2 1 monuser secret slave
> MINSUPPLIES 1
> SHUTDOWNCMD "shutdown.exe -s -t 0 -c \"Bla-bla-bla.\""
> NOTIFYCMD upssched.exe
> POLLFREQ 5
> POLLFREQALERT 5
> HOSTSYNC 15
> DEADTIME 15
> POWERDOWNFLAG "C:\\killpower.flag"
> NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
> NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
> RBWARNTIME 43200
> NOCOMMWARNTIME 300
> FINALDELAY 5
>
> upsd.users
> [user]
> password = 123qweASD
> [mainups]
> password = secret
> upsmon slave
> upssched.conf
> CMDSCRIPT upsscript.cmd
> PIPEFN C:\\NUT\\NUT\\upssched.pipe
> LOCKFN C:\\NUT\\NUT\\upssched.lock
> ...
>
> In this configuration, I can see UPS variables, Windows Server is shutting
> down on "upsmon -c fsd".
>
> For example:
> upsc mainups at 192.168.10.2
> battery.charge: 100
> battery.charge.low: 10
> battery.charge.warning: 50
> battery.date: 2011/12/30
> battery.mfr.date: 2011/12/30
> battery.runtime: 6675
> battery.runtime.low: 120
> battery.type: PbAc
> battery.voltage: 13.5
> battery.voltage.nominal: 12.0
> device.mfr: American Power Conversion
> device.model: Back-UPS ES 525
> ...
>
> 1. It seems that it impossible to use long file names with spaces in
> PIPEFN/LOCKFN/NOTIFYCMD/... (like "C:\Program Files
> (x86)\NUT\sbin\upssched.exe") or I couldn't find the way (error: cannot
> find "C:\Program "). Environment variables are not supported too (it would
> be great to use %ProgramFiles% in the paths).
>
> This problem is the reason, why I had to use "C:\NUT\NUT" directory for
> pipe & lock. Moreover, to start "upssched.exe" via NOTIFYCMD, I included
> "C:\Program Files (x86)\NUT\bin" and "C:\Program Files (x86)\NUT\sbin" into
> %PATH% variable.
>
> 2. I added line "AT ONBATT * EXECUTE Dennis" into end of "upssched.conf".
> Then "mainups" is going to battery, NUT writes proper event into
> Application Log: "upsmon - UPS mainups at 192.168.10.2 on battery.". It is
> OK, but strange thing is that the script "upsscript.cmd" was not executed.
> I have checked it several times (even using Process Monitor from
> sysinternals - process "upssched.exe" is not started at all). The next
> interesting thing: I started "upsmon -DDD" and ... at the next battery
> event, "upssched.exe" was executed and "upsscript.cmd" has been executed
> too.
>
> By default, there are "nut.exe" and one "upsmon.exe" processes in Windows
> Server (after its starting). There are two "upsmon" in Linux client. It is
> correct situation? Should I start one more instance of "upsmon" to execute
> CMDSCRIPT successfully or I have a problem in my configs oor something else?
>
> 3. I have tried to use timers. If remove previous line from
> "upssched.conf" and add "AT ONBATT * START-TIMER onbattwarn 3", "AT ONLINE
> * CANCEL-TIMER onbattwarn", the behaviour will be like in previous item: no
> running "upssched.exe" without second instance of "upsmon", but with
> additional effects =). "upssched.exe" is starting, "upssched.lock" file is
> created, then process is terminated with event "upssched.exe - Failed to
> connect to parent and failed to create parent: Permission denied.".
>
> I couldn't fix this problem =(. I've checked the permissions, user's
> accounts for all NUT processes/FS/etc. It seems that everything is OK. I
> think that the problem is in get_lock function in "upssched.c". No ideas
> why, anyway, GetLastError returns "permission denied" strongly.
>
> 4. A few times, I've got error "upssched.exe - open /dev/null: No such
> file or directory." during my experiments, but I have no idea how to
> reproduce it =(
>
> The main question: is there someone who has success with timers on Windows
> x64 platform? I would like to use them...
>
> Thanks!
>

the Windows port is not yet fully functional, nor as mature as the Unix
versions.
Currently, upssched is not working.
So you can only use the simple scheduling approach:
http://www.networkupstools.org/docs/user-manual.chunked/ar01s07.html#_the_simple_approach_using_your_own_script

I can't give any date on a fix for this point though, since it's bound to
Eaton resource allocation (which is sponsoring this feature).

cheers,
Arnaud
-- 
Linux / Unix Expert R&D - Eaton - http://powerquality.eaton.com
Network UPS Tools (NUT) Project Leader - http://www.networkupstools.org/
Debian Developer - http://www.debian.org
Free Software Developer - http://arnaud.quette.free.fr/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.alioth.debian.org/pipermail/nut-upsuser/attachments/20120105/4aa05051/attachment.html>


More information about the Nut-upsuser mailing list