UPSD(8)
=======

NAME
----

upsd - UPS information server

SYNOPSIS
--------
*upsd* -h

*upsd* ['OPTIONS'] 

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

*upsd* is responsible for serving the data from the drivers to the clients.  It
connects to each driver and maintains a local cache of the current state.
Queries from the clients are served from this cache, so delays are minimal.

It also conveys administrative messages from the clients back to the drivers,
such as starting tests, or setting values.

Communication between *upsd* and clients is handled on a TCP port.
Configuration details for this port are described in linkman:upsd.conf[8].

This program is essential, and must be running at all times to actually
make any use out of the drivers and clients.

Controls in the configuration files allow you to limit access to the
server, but you should also use a firewall for extra protection.  Client
processes such as linkman:upsmon[8] trust *upsd* for status information about
the UPS hardware, so keep it secure.

OPTIONS
-------

*-c* 'command'::
Send 'command' to the background process as a signal.  Valid commands
are:

	*reload*;; reread configuration files
	*stop*;; stop process and exit

*-D*::
Raise the debug level.  Use this multiple times for additional details.

*-h*::
Display the help text.

*-r* 'directory'::
upsd will *chroot*(2) to 'directory' shortly after startup
and before parsing any configuration files with this option set.  You
can use this to create a "jail" for greater security.
+
You must coordinate this with your drivers, as upsd must be able to find
the state path within 'directory'.  See linkman:upsdrvctl[8] and
linkman:nutupsdrv[8].

*-u* 'user'::
Switch to user 'user' after startup if started as root.  This
overrides whatever you may have compiled in with `configure
--with-user`.

*-V*::
Display the version of the program.

RELOADING
---------

upsd can reload its configuration files without shutting down the process
if you send it a SIGHUP or start it again with `-c reload`.  This only works
if the background process is able to read those files.

If you think that upsd can't reload, check your syslogs for error messages.
If it's complaining about not being able to read the files, then you need
to adjust your system to make it possible.  Either change the permissions
on the files, or run upsd as another user that will be able to read them.

DO NOT make your upsd.conf or upsd.users world-readable, as those files
hold important authentication information.  In the wrong hands, it could
be used by some evil person to spoof your master upsmon and command your
systems to shut down.

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

upsd expects the drivers to either update their status regularly or at
least answer periodic queries, called pings.  If a driver doesn't
answer, upsd will declare it "stale" and no more information will be
provided to the clients.

If upsd complains about staleness when you start it, then either your
driver or configuration files are probably broken.  Be sure that the
driver is actually running, and that the UPS definition in
linkman:ups.conf[5] is correct.  Also make sure that you start your
driver(s) before starting upsd.

Data can also be marked stale if the driver can no longer communicate
with the UPS.  In this case, the driver should also provide diagnostic
information in the syslog.  If this happens, check the serial or
USB cabling, or inspect the network path in the case of a SNMP UPS.

ACCESS CONTROL
--------------

If the server is build with tcp-wrappers support enabled, it will check if
the NUT username is allowed to connect from the client address through the
`/etc/hosts.allow` and `/etc/hosts.deny` files. Note that this will
only be done for commands that require to be logged into the server. Further
details are described in *hosts_access*(5).

FILES
-----

The general upsd configuration file is linkman:upsd.conf[5].  The
administrative functions like SET and INSTCMD for users are defined and
controlled in linkman:upsd.users[5].  UPS definitions are found in
linkman:ups.conf[5].

ENVIRONMENT VARIABLES
---------------------

*NUT_CONFPATH* is the path name of the directory that contains
`upsd.conf` and other configuration files.  If this variable is not set,
*upsd* uses a built-in default, which is often `/usr/local/ups/etc`.

*NUT_STATEPATH* is the path name of the directory in which 
*upsd* keeps state information.  If this variable is not set,
*upsd* uses a built-in default, which is often `/var/state/ups`.
The *STATEPATH* directive in linkman:upsd.conf[5] overrides this variable.

SEE ALSO
--------

Clients:
~~~~~~~~
linkman:upsc[8], linkman:upscmd[8],
linkman:upsrw[8], linkman:upslog[8], linkman:upsmon[8]

CGI programs:
~~~~~~~~~~~~~
linkman:upsset.cgi[8], linkman:upsstats.cgi[8], linkman:upsimage.cgi[8]

Drivers:
~~~~~~~~
linkman:nutupsdrv[8],
linkman:apcsmart[8], linkman:belkin[8], linkman:belkinunv[8],
linkman:bestuferrups[8], linkman:bestups[8],
linkman:cyberpower[8], linkman:energizerups[8], linkman:etapro[8],
linkman:everups[8], linkman:genericups[8],
linkman:isbmex[8], linkman:liebert[8], linkman:masterguard[8],
linkman:mge-shut[8], linkman:mge-utalk[8], linkman:oneac[8],
linkman:powercom[8], linkman:safenet[8], linkman:snmp-ups[8],
linkman:tripplite[8], linkman:tripplitesu[8], linkman:victronups[8], 

Internet resources:
~~~~~~~~~~~~~~~~~~~
The NUT (Network UPS Tools) home page: http://www.networkupstools.org/
