NUTCONF(8)
==========

NAME
----

nutconf - NUT configuration tool

SYNOPSIS
--------

*nutconf* --help

*nutconf* ['OPTIONS']

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

*nutconf* tool is used to create and manipulate NUT configuration files.
It also supports device scanning (to suggest configuration of devices).

INSTALLATION
------------

The scanning feature depends on the very same compile time and run time
dependencies as the *nut-scanner*.

OPTIONS
-------

*-h* | *-help* | *--help*::
Display the help text.

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

*-v* | *--verbose*::
Increase output verbosity (may be used multiple times).

*--is-configured*::
Checks whether NUT was configured, before.

*--system*::
System configuration directory shall be used.

*--local* 'directory'::
Sets alternative configuration directory.

*--get-mode*::
Prints current NUT configuration mode

*--set-mode* 'mode'::
Sets NUT configuration mode.
+
Known modes are:

- standalone
- netserver
- netclient
- controlled
- manual
- none

CONFIGURATION ENTRY SET/ADD OPTIONS
-----------------------------------

These options mostly have 2 forms: '--set-...' or '--add-...'.

The difference is that the set options discard previous settings
while the add options keep them.

Note that such options may be specified multiple times for one run
(to enable setting multiple entries at once).

*--set-monitor* | *--add-monitor* '<arguments>'::
Sets/adds a NUT monitor.
+
* Arguments:
+
----
'<ups_ID>' '<host>[:<port>]' '<power_value>' '<user>' '<passwd>' '(\"master\"|\"slave\")'
----

*--set-listen* | *--add-listen* '<address>' '[<port>]'::
Sets/adds linkman:upsd[8] daemon listen address.

*--set-device* | *--add-device* '<arguments>'::
Sets/adds a device (typically a UPS).
+
* Arguments:
+
----
'<ups_ID>' '<driver>' '<port>' '[<attribute>=<value>]*'
----
+
The attribute/value pairs follow device configuration syntax.
Devices may have very different configuration attributes depending on the driver.
Exhaustive description of them is beyond this man page and may be found in NUT documentation.

*--set-notifyflags* | *--add-notifyflags* '<type>' '<flag>+'::
+
--
Sets/adds notification flags for the notification type.

* Notification types are:

- 'ONLINE' (mains is present)
- 'ONBATT' (mains is gone)
- 'LOWBATT' (remaining battery capacity is low)
- 'FSD' (shutdown was forced)
- 'COMMOK' (communication with device established)
- 'COMMBAD' (lost communication with device)
- 'SHUTDOWN' (system is going down, now)
- 'REPLBATT' (UPS battery needs replacing)
- 'NOCOMM' (device is unavailable)
- 'NOPARENT' (upsmon parent process died, shutdown is impossible)
- 'CAL' (calibration in progress)
- 'NOTCAL' (calibration finished)
- 'OFF' (UPS is administratively OFF or asleep, should wake up on command)
- 'NOTOFF' (UPS is no longer administratively OFF or asleep)
- 'BYPASS' (on bypass = powered, not protecting)
- 'NOTBYPASS' (no longer on bypass)
- 'ALARM' (UPS is in an alarm state (has active alarms))
- 'NOTALARM' (UPS is no longer in an alarm state (no active alarms))
- 'OVER' (overloaded)
- 'NOTOVER' (no longer overloaded)
- 'TRIM' (trimming incoming voltage)
- 'NOTTRIM' (no longer trimming incoming voltage)
- 'BOOST' (boosting incoming voltage)
- 'NOTBOOST' (no longer boosting incoming voltage)
- 'OTHER' (UPS has at least one unclassified status token)
- 'NOTOTHER' (UPS has no unclassified status tokens anymore)
- 'SUSPEND_STARTING' (OS is entering sleep/suspend/hibernate mode)
- 'SUSPEND_FINISHED' (OS just finished sleep/suspend/hibernate mode)

* Notification flags:

- 'SYSLOG' (use syslogd to log the notification)
- 'WALL' (push a message to users' terminals)
- 'EXEC' (execute a command)
- 'IGNORE' (don't act)
--

*--set-notifymsg* '<type>' '<message>'::
Sets message for the specified notification type.

*--set-shutdowncmd* '<command>'::
Sets command used to shut the system down.

*--set-user* | *--add-user* '<arguments>'::
Sets/adds NUT user.
+
* Arguments:

- '<username>' (specifies user name).
  For 'upsmon' user, it has a special form of
  `upsmon=(primary|master|secondary|slave)` which specifies the monitoring mode.
- 'password=<passwd>' sets password for the user
- 'actions=<actions>' sets actions ('SET', 'FSD' are supported)
- 'instcmds=<command>' sets instant commands allowed for the user
  (may be used multiple times)

SCANNING OPTIONS
----------------

Availability of each scanning option depends on availability of
various 3rd-party libraries both at compile time and run time.

Run the tool with the *--help* option to check which of the
*--scan-...* options are actually supported.

All timeouts are in microseconds.

*--scan-snmp* '<start IP>' '<stop IP>' '[<attribute>=<value>]*'::
Scans for SNMP devices on IP addresses from the specified range.
+
* Known attributes are:

- 'timeout' device scan timeout
- 'community' SNMP community (default: *public*)
- 'sec-level' security level (SNMPv3); one of *noAuthNoPriv* *authNoPriv*, *authPriv*
- 'sec-name' security name (SNMPv3); mandatory companion of *sec-level*
- 'auth-password' authentication password (SNMPv3); mandatory for *authNoPriv* and *authPriv*
- 'priv-password' privacy password (SNMPv3); mandatory for *authPriv*
- 'auth-protocol' authentication protocol (SNMPv3): *MD5* or *SHA*, *MD5* is the default
- 'priv-protocol' priv. protocol (SNMPv3): *DES* or *AES*, *DES* is the default
- 'peer-name' peer name

*--scan-usb*::
Scans the USB bus for known devices

*--scan-xml-http* '[<timeout>]'::
Scans for XML/HTTP devices on the network.

*--scan-nut* '<start IP>' '<stop IP>' '<port>' '[<timeout>]'::
Scans for NUT (pseudo-)devices on the network.

*--scan-avahi* '[<timeout>]'::
Scans for Avahi devices.

*--scan-ipmi* '<start IP>' '<stop IP>' '[<attribute>=<value>]'*::
+
--
Scans for IPMI devices on IP addresses from the specified range.

* Known attributes are:

- 'username' username (mandatory for IPMI/LAN)
- 'password' user password (mandatory for IPMI/LAN)
- 'auth-type' authentication type (see below)
- 'cipher-suite-id' cipher suite ID (see below)
- 'K-g-BMC-key' optional second key (???)
- 'priv-level' priv. level
- 'workaround-flags'
- 'version' (1.5 or 2.0)

* Authentication types:
+
Specifies the IPMI 1.5 authentication type to use (NONE, STRAIGHT_PASSWORD_KEY,
MD2, and MD5) with the remote host (default=MD5).
This forces connection through the 'lan' IPMI interface, thus in IPMI 1.5 mode.

- 'none' (authentication is disabled)
- 'MD2'
- 'MD5' (default)
- 'plain-password' (no ciphering used for password sending)
- 'OEM'
- 'RMCPplus'

* Cipher suite IDs:
+
Specifies the IPMI 2.0 cipher suite ID to use.
+
The Cipher Suite ID identifies a set of authentication, integrity, and
confidentiality algorithms to use for IPMI 2.0 communication.
+
The authentication algorithm identifies the algorithm to use for session setup,
the integrity algorithm identifies the algorithm to use for session packet
signatures, and the confidentiality algorithm identifies the algorithm to
use for payload encryption (default=3).
+
The following cipher suite IDs are currently supported:
+
[options="header"]
|===========================================================================
| Code | Authentication | Integrity       | Confidentiality
| '0'  | None           | None            | None
| '1'  | HMAC-SHA1      | None            | None
| '2'  | HMAC-SHA1      | HMAC-SHA1-96    | None
| '3'  | HMAC-SHA1      | HMAC-SHA1-96    | AES-CBC-128
| '6'  | HMAC-MD5       | None            | None
| '7'  | HMAC-MD5       | HMAC-MD5-128    | None
| '8'  | HMAC-MD5       | HMAC-MD5-128    | AES-CBC-128
| '11' | HMAC-MD5       | MD5-128         | None
| '12' | HMAC-MD5       | MD5-128         | AES-CBC-128
| '15' | HMAC-SHA256    | None            | None
| '16' | HMAC-SHA256    | HMAC_SHA256_128 | None
| '17' | HMAC-SHA256    | HMAC_SHA256_128 | AES-CBC-128
|===========================================================================
--

*--scan-serial* '<port>'*::
Scans for serial devices (of supported types) on the specified
serial port(s).

EXAMPLES
--------

To set alternative directory for configuration files:

	:; nutconf --local ~/test/nut/etc

To add another user (keeping the existing ones):

	:; nutconf --add-user bart password=qwerty

To scan USB devices and serial devices (on the first two ports):

	:; nutconf --scan-usb --scan-serial /dev/ttyS1 /dev/ttyS2

SEE ALSO
--------

linkman:ups.conf[5]
linkman:nut-scanner[8]

INTERNET RESOURCES
------------------

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