Network UPS Tools

Last updated
Network UPS Tools (NUT)
Developer(s) Evgeny "Jim" Klimov
Arnaud Quette
Arjen de Korte
Charles Lepple
Numerous contributors (...)
Initial releaseMarch 8, 1998 (1998-03-08)
Stable release
2.8.0 / April 26, 2022;13 months ago (2022-04-26)
Repository
Written in C
Operating system Cross-platform
License GPL
Website networkupstools.org OOjs UI icon edit-ltr-progressive.svg

Network UPS Tools (NUT) is a suite of software component designed to monitor power devices, such as uninterruptible power supplies, power distribution units, solar controllers and servers power supply units. Many brands and models are supported and exposed via a network protocol and standardized interface.

Contents

It follows a three-tier model with dozens of NUT device driver daemons that communicate with power-related hardware devices over selected media using vendor-specific protocols, the NUT server upsd which represents the drivers on the network (defaulting to IANA registered port 3493/tcp [1] ) using the standardized NUT protocol, and NUT clients (running on same localhost as the server, or on remote systems) which can manage the power devices and query their power states and other metrics for any applications, usually ranging from historic graphing and graceful shutdowns to orchestrated power failover and VM migration.

Based on NUT design and protocol, the project community authored "UPS management protocol", Informational RFC 9271, which was published by IETF in August 2022, [2] and the IANA port number registry was updated to reflect it (even though this RFC is not formally an Internet Standard).

Clients maintained in the NUT codebase include upsc, upsrw and upscmd for command-line actions, upsmon for relatively simple monitoring and graceful shutdowns (considering the amount of minimally required vs. total available power source units in the current server), upssched for complex monitoring scenarios, upscgi for a simple web interface, a NUT-Monitor X11 desktop client, as well as C, C++ and Python libraries for third-party clients. Community projects include more clients and bindings for other languages.

Being a cross-platform project, NUT works on most Unix, BSD and Linux platforms with various system architectures, from embedded systems to venerable Solaris, HP-UX and AIX servers. There were also native Windows builds based on previous stable NUT release line, last being 2.6.5. This effort was revived after the NUT 2.8.0 release, becoming part of the main codebase in September 2022 (at this time there are areas of the codebase documented in the project as placeholders and not yet ported to the Windows platform, and packages are not yet produced by the project).

History

Pavel Korensky's original apcd provided the inspiration for pursuing the APC Smart-UPS protocol in 1996. [3] This is the same software that Apcupsd derived from, according to the Debian maintainer of the latter. [4]

Russell Kroll, the original NUT author and coordinator, released the initial package, named smartupstools, in 1998. The design already provided for two daemons, upsd (which serves data) and upsmon (which protects systems), a set of drivers and examples, a number of CGI modules and client integration, and a set of client CLI tools (upsc, upsrw and upscmd), for interfacing the system with a specific UPS of a given model. [5]

Evgeny "Jim" Klimov, the current project leader since 2020, [6] focuses first on automated testing and quality assurance of existing codebase to ensure minimal breakage introduced by new contributions, as well as to clean up older technical debts and inconsistencies highlighted by modern lint and coverage tools, [7] and issuing a long-overdue new official release.[ citation needed ]

Over its two-decade history, the open-source project became the de facto standard solution for UPS monitoring provided with OS distributions and embedded into many NAS solutions, some converged hypervisor set-ups, and other appliances, and enjoyed contributions and support from numerous end-users as well as representatives of power hardware vendors providing protocol specifications, sample hardware, and in many cases new NUT driver code and subsequent fixes based on NUT community feedback.[ citation needed ]

Related Research Articles

The Secure Shell Protocol (SSH) is a cryptographic network protocol for operating network services securely over an unsecured network. Its most notable applications are remote login and command-line execution.

Telnet is a client/server application protocol that provides access to virtual terminals of remote systems on local area networks or the Internet. Telnet consists of two components: (1) the protocol itself which specifies how two parties to communicate and (2) the software application that provides the service. User data is interspersed in-band with Telnet control information in an 8-bit byte oriented data connection over the Transmission Control Protocol (TCP). Telnet was developed in 1969 beginning with RFC 15, extended in RFC 855, and standardized as Internet Engineering Task Force (IETF) Internet Standard STD 8, one of the first Internet standards. Telnet transmits all information including usernames and passwords in plaintext so it is not recommended for security-sensitive applications such as remote management of routers. Telnet's use for this purpose has waned significantly in favor of SSH. Some extensions to Telnet which would provide encryption have been proposed.

<span class="mw-page-title-main">Server (computing)</span> Computer to access a central resource or service on a network

In computing, a server is a piece of computer hardware or software that provides functionality for other programs or devices, called "clients". This architecture is called the client–server model. Servers can provide various functionalities, often called "services", such as sharing data or resources among multiple clients or performing computations for a client. A single server can serve multiple clients, and a single client can use multiple servers. A client process may run on the same device or may connect over a network to a server on a different device. Typical servers are database servers, file servers, mail servers, print servers, web servers, game servers, and application servers.

Internet Small Computer Systems Interface or iSCSI is an Internet Protocol-based storage networking standard for linking data storage facilities. iSCSI provides block-level access to storage devices by carrying SCSI commands over a TCP/IP network. iSCSI facilitates data transfers over intranets and to manage storage over long distances. It can be used to transmit data over local area networks (LANs), wide area networks (WANs), or the Internet and can enable location-independent data storage and retrieval.

<span class="mw-page-title-main">Network Time Protocol</span> Standard protocol for synchronizing time across devices

The Network Time Protocol (NTP) is a networking protocol for clock synchronization between computer systems over packet-switched, variable-latency data networks. In operation since before 1985, NTP is one of the oldest Internet protocols in current use. NTP was designed by David L. Mills of the University of Delaware.

SOCKS is an Internet protocol that exchanges network packets between a client and server through a proxy server. SOCKS5 optionally provides authentication so only authorized users may access a server. Practically, a SOCKS server proxies TCP connections to an arbitrary IP address, and provides a means for UDP packets to be forwarded.

In computer networking, Layer 2 Tunneling Protocol (L2TP) is a tunneling protocol used to support virtual private networks (VPNs) or as part of the delivery of services by ISPs. It uses encryption ('hiding') only for its own control messages, and does not provide any encryption or confidentiality of content by itself. Rather, it provides a tunnel for Layer 2, and the tunnel itself may be passed over a Layer 3 encryption protocol such as IPsec.

X.Org Server is the free and open-source implementation of the X Window System display server stewarded by the X.Org Foundation.

An IRCd, short for Internet Relay Chat daemon, is server software that implements the IRC protocol, enabling people to talk to each other via the Internet. It is distinct from an IRC bot that connects outbound to an IRC channel.

FTPS is an extension to the commonly used File Transfer Protocol (FTP) that adds support for the Transport Layer Security (TLS) and, formerly, the Secure Sockets Layer cryptographic protocols.

The Smart-UPS is a series of enterprise-level uninterruptible power supplies (UPS) made by American Power Conversion (APC). Most of the units have a SmartSlot which accepts an optional interface card providing features ranging from network connectivity to temperature and humidity monitoring. With the exception of RT and SRT series, Smart-UPS units are line-interactive UPS systems, only running their inverters when the grid power is unavailable.

The Network Time Protocol daemon (ntpd) is an operating system program that maintains the system time in synchronization with time servers using the Network Time Protocol (NTP).

<span class="mw-page-title-main">NetworkManager</span> Software

NetworkManager is a daemon that sits on top of libudev and other Linux kernel interfaces and provides a high-level interface for the configuration of the network interfaces.

WHOIS is a query and response protocol that is used for querying databases that store an Internet resource's registered users or assignees. These resources include domain names, IP address blocks and autonomous systems, but it is also used for a wider range of other information. The protocol stores and delivers database content in a human-readable format. The current iteration of the WHOIS protocol was drafted by the Internet Society, and is documented in RFC 3912.

In computer networking, a port or port number is a number assigned to uniquely identify a connection endpoint and to direct data to a specific service. At the software level, within an operating system, a port is a logical construct that identifies a specific process or a type of network service. A port at the software level is identified for each transport protocol and address combination by the port number assigned to it. The most common transport protocols that use port numbers are the Transmission Control Protocol (TCP) and the User Datagram Protocol (UDP); those port numbers are 16-bit unsigned numbers.

Apcupsd, short for APC UPS daemon, is a utility that runs on Linux, UNIX, macOS and Windows. It allows the computer to interact with APC UPSes. Apcupsd also works with some OEM-branded products manufactured by APC.

Instrument Neutral Distributed Interface (INDI) is a distributed control system (DCS) protocol to enable control, data acquisition and exchange among hardware devices and software front ends, emphasizing astronomical instrumentation.

VRPN is a device-independent, network-based interface for accessing virtual reality peripherals in VR applications. It was originally designed and implemented by Russell M. Taylor II at the Department of Computer Science of the University of North Carolina at Chapel Hill. VRPN was maintained and supported by Sensics while it was business. It is currently maintained by ReliaSolve and developed in collaboration with a productive community of contributors. It is described more fully at vrpn.orgArchived 2022-07-09 at the Wayback Machine and in VRPN-VRST.

<span class="mw-page-title-main">Android Debug Bridge</span> Tool for debugging Android-based devices

The Android Debug Bridge is a programming tool used for the debugging of Android-based devices. The daemon on the Android device connects with the server on the host PC over USB or TCP, which connects to the client that is used by the end-user over TCP. Made available as open-source software under the Apache License by Google since 2007, features include a shell and the possibility to make backups. The adb software is compatible with Windows, Linux and macOS. It has been misused by botnets and other malware, for which mitigations were developed such as RSA authentication and device whitelisting.

References

  1. "3493/tcp" . Retrieved 2022-08-10.
  2. Price, Roger (August 2022). UPS management protocol. doi: 10.17487/RFC9271 . RFC 9271.
  3. Russell Kroll (25 November 2004). "Network UPS Tools: Acknowledgements" . Retrieved 2010-06-09.
  4. Nils Rennebarth (1 Jul 1997). "apcupsd, genpower, and PowerChute(TM) "Black" cable". debian-user (Mailing list). Retrieved 2010-06-09. apcupsd is derived from apcd by Pavel Korensky
  5. The README file for smartupstools-0.20.
  6. "Updates to NUT project leadership". Nut-upsdev (Mailing list). 13 November 2020.
  7. "NUT coding quality improvements". Nut-upsdev (Mailing list). 28 November 2020.