UPSRW(8)
========

NAME
----

upsrw - Network UPS Tools device/driver variable administration tool

SYNOPSIS
--------

*upsrw* [-l] 'ups'

*upsrw* -h

*upsrw* -s 'variable' [-u 'username'] [-p 'password'] [-w] [-t <timeout>] 'ups'

DESCRIPTION
-----------

*upsrw* allows you to view and change the read/write variables inside your UPS.
It sends commands via the server linkman:upsd[8] to your driver, which
configures the hardware for you.  You must use credentials defined in
linkman:upsd.users[5] file on that data server with appropriate permissions.

The list of variables that allow you to change their values is based on
the capabilities of your UPS equipment.  Not all models support this
feature.  Typically, cheaper hardware does not support any of them.
Run `upsrw` with a UPS identifier to see what will work for you.

OPTIONS
-------

*-s* 'variable'::
Specify the variable to be changed inside the UPS.  For unattended
mode such as in shell scripts, use the format VAR=VALUE to specify both
the variable and the value, for example:

 -s input.transfer.high=129
+
Without this argument, upsrw will just display the list of the variables
and their possible values.
+
Some variables are strings, and can be set to any value within the
length limit.  Others are enumerated types and can only be set to one of
those values.  Others may be within an allowed range of values. Refer to
the list to know what's available in your hardware.

*-l*::
Just display the list of the variables and their possible values.
+
Same as default activity without '-s' argument, provided for CLI similarity
with other tools.

*-u* 'username'::
Set the NUT username for the connection to the server.  This is optional,
and you will be prompted for this when using the -s option if you don't
specify -u on the command line. NUT usernames are defined in
linkman:upsd.users[5], and are not linked to system usernames.

*-p* 'password'::
Set the password to authenticate to the server.  This is also optional
like -u, and you will be prompted for it if necessary.

*-w*::
Wait for the completion of setting execution by the driver and return its
actual result from the device. Note that this feature requires that both
linkman:upsd[8] and the driver support TRACKING (NUT version 2.8.0 or higher),
or it will otherwise fail.
+
The command will also block until an actual result is provided from the driver,
or the timeout is reached (see *-t*).

*-t* 'seconds'::
Set a timeout when using *-w*. Defaults to 10 seconds.

'ups'::
View or change the settings on this UPS.  The format for this option is
`upsname[@hostname[:port]]`.  The default hostname is "localhost".

COMMON OPTIONS
--------------

*-h*::
Show the command-line help message.

*-D*::
Raise the debugging level. Use this option multiple times for more details.
Overrides the optional `NUT_DEBUG_LEVEL` environment variable.

*-V*::
Show NUT version banner.  More details may be available if you also
`export NUT_DEBUG_LEVEL=1` or greater verbosity level.

*-W* 'secs'::
Set the timeout for initial network connections (by default they are
indefinitely non-blocking, or until the system interrupts the attempt).
Overrides the optional `NUT_DEFAULT_CONNECT_TIMEOUT` environment variable.

UNATTENDED MODE
---------------

If you run this program inside a shell script or similar to set
variables, you will need to specify all of the information on the
command line.  This means using `-s VAR=VALUE`, `-u` and `-p`.  Otherwise it
will put up a prompt and your program will hang.

This is not necessary when displaying the list, as the username and
password are not required for read-only mode.

Moreover, if you run this program inside a shell script or similar, you
should only consider using output from stdout, not stderr.

DIAGNOSTICS
-----------

*upsrw* can't set variables on your UPS unless you provide a valid
username and password.  If you get "access denied" errors, make sure
that your linkman:upsd.users[5] has an entry for you, and that the
username you are using has permissions to SET variables.

*upsrw* without '-w' would somewhat confusingly show "OK" meaning just that
the data server connection was established, and the server did not immediately
reject the request due to e.g. unknown driver variable name. If you care
to know the actual results, do use the `-w (-t NUM)` option(s) to wait for
them.

VALUE FORMAT
------------

When using *upsrw* to modify a numeric float value, that values must be given
using decimal (base 10) english-based representation, so using a dot, in
non-scientific notation.  So hexadecimal, exponents, and comma for thousands
separator are forbidden.

For example: "1200.20" is valid, while "1,200.20" and "1200,20" are invalid.

HISTORY
-------

This program used to be called upsct2, which was ambiguous and
confusing.

SEE ALSO
--------

linkman:upsd[8], linkman:upscmd[8]

Internet resources:
~~~~~~~~~~~~~~~~~~~

The NUT (Network UPS Tools) home page: https://www.networkupstools.org/
