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.2 / April 1, 2024;4 months ago (2024-04-01)
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). As of NUT releases 2.8.1 and 2.8.2, [3] NUT for Windows builds are available as archives from the CI platform, but neatly integrated packages are not yet available.

History

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

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. [6] To reflect multi-vendor driver support, and to prevent potential quarrels with APC, the project name was changed to Network UPS Tools starting from 0.42.0, released October 31, 1999.

Arnaud Quette led the project since 2005, increasing its visibility to prospective contributors by creating a project on the Debian Alioth Forge, making it less dependent on one person. Working for MGE UPS Systems and later Eaton, he also ensured vendor collaboration in the worlds of UPS and embedded systems. As a result, many drivers for different protocols and media were developed, and many enterprise-style tools and software bindings were added to the project. Numerous drivers were redesigned into a more common framework, allowing for better codebase sharing.

Evgeny "Jim" Klimov, the current project leader since 2020, [7] 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, [8] and issuing a long-overdue new official release v2.8.0 ultimately on April 26, 2022 [9] .

The need to test NUT on many more platforms than typically offered by cloud CI projects based on market leaders (Debian/Ubuntu Linux, MacOS, Windows) led to a set of bespoke VMs and containers that were instantiated on different sponsoring cloud providers in different years, with a Jenkins-based NUT CI farm covering many of the less represented platforms. This also led to creation of a "jenkins-dynamatrix" Jenkins Shared Library to orchestrate a build-and-test matrix defined by currently active population of build agents declaring their platform capabilities; while currently its primary consumer is NUT, other projects with similar needs are welcome to adapt it to their needs. Thanks to this set-up, a typical iteration of NUT code base runs some 300 scenarios with different build and test targets, across numerous OS kernel technologies and distributions based on them, system library, compiler, shell and make program implementations, covering numerous branches of the past two decades of IT evolution -- actively ensuring all these systems are supported with each merged change set. [10]

His later work focuses on guiding contributors of new drivers and other code, expanding compatibility with various operating systems, toolkit implementations and language revisions, as well as maintaining and documenting the possibility to build current NUT codebase wherever it worked in the past decades, with the motto "If those boxes still run, they deserve protection!"

There are also many efforts about quality-of-life improvements for end-users of NUT, such as OS service management framework integration, new command-line tool options, NUT programs' inter-communication features, tunability and openness to troubleshooting efforts. Of special note is the support for building NUT for in‐place upgrades or non‐disruptive tests, [11] allowing end-users to try newer NUT code base than what their OS distribution packages deliver, while remaining as compatible to their layout and configuration as possible, so they can use the custom build as a drop-in replacement if they like it after prior testing from the build workspace.

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

<span class="mw-page-title-main">Linux distribution</span> Operating system based on the Linux kernel

A Linux distribution is an operating system made from a software collection that includes the Linux kernel and often a package management system. They are often obtained from the website of each distribution, which are available for a wide variety of systems ranging from embedded devices and personal computers to servers and powerful supercomputers.

Network File System (NFS) is a distributed file system protocol originally developed by Sun Microsystems (Sun) in 1984, allowing a user on a client computer to access files over a computer network much like local storage is accessed. NFS, like many other protocols, builds on the Open Network Computing Remote Procedure Call system. NFS is an open IETF standard defined in a Request for Comments (RFC), allowing anyone to implement the protocol.

In computing, cross-platform software is computer software that is designed to work in several computing platforms. Some cross-platform software requires a separate build for each platform, but some can be directly run on any platform without special preparation, being written in an interpreted language or compiled to portable bytecode for which the interpreters or run-time packages are common or standard components of all supported platforms.

<span class="mw-page-title-main">WebObjects</span> Java web application server and framework originally developed by NeXT Software

WebObjects is a discontinued Java web application server and a server-based web application framework originally developed by NeXT Software, Inc.

In computing, the User-Agent header is an HTTP header intended to identify the user agent responsible for making a given HTTP request. Whereas the character sequence User-Agent comprises the name of the header itself, the header value that a given user agent uses to identify itself is colloquially known as its user agent string. The user agent for the operator of a computer used to access the Web has encoded within the rules that govern its behavior the knowledge of how to negotiate its half of a request-response transaction; the user agent thus plays the role of the client in a client–server system. Often considered useful in networks is the ability to identify and distinguish the software facilitating a network session. For this reason, the User-Agent HTTP header exists to identify the client software to the responding server.

cURL is a computer software project providing a library (libcurl) and command-line tool (curl) for transferring data using various network protocols. The name stands for "Client for URL".

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

<span class="mw-page-title-main">UEFI</span> Operating system and firmware specification

Unified Extensible Firmware Interface is a specification that defines the architecture of the platform firmware used for booting the computer hardware and its interface for interaction with the operating system. Examples of firmware that implement the specification are AMI Aptio, Phoenix SecureCore, TianoCore EDK II, InsydeH2O. UEFI replaces the BIOS which was present in the boot ROM of all personal computers that are IBM PC compatible, although it can provide backwards compatibility with the BIOS using CSM booting. Intel developed the original Extensible Firmware Interface (EFI) specification. Some of the EFI's practices and data formats mirror those of Microsoft Windows. In 2005, UEFI deprecated EFI 1.10.

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.

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.

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

Software remastering is software development that recreates system software and applications while incorporating customizations, with the intent that it is copied and run elsewhere for "off-label" usage. The term comes from remastering in media production, where it is similarly distinguished from mere copying.


This is a comparison of notable free and open-source configuration management software, suitable for tasks like server configuration, orchestration and infrastructure as code typically performed by a system administrator.

In computing, the term remote desktop refers to a software- or operating system feature that allows a personal computer's desktop environment to be run remotely from one system, while being displayed on a separate client device. Remote desktop applications have varying features. Some allow attaching to an existing user's session and "remote controlling", either displaying the remote control session or blanking the screen. Taking over a desktop remotely is a form of remote administration.

<span class="mw-page-title-main">Pano Logic</span> American information technology company

Pano Logic was a manufacturer of devices which present virtual desktops to the end user with no local processing power. They describe this concept as "zero client". This is perceived as offering benefits in end-user support and in power provision to desks. OEM versions have been included in displays from some vendors, allowing a single unit to be deployed. The company failed in October 2012. In March 2013, Propalms announced they had acquired the rights to support Panologic customers, and will "help transition the customer base to a new platform".

In computing, SPICE is a remote-display system built for virtual environments which allows users to view a computing "desktop" environment – not only on its computer-server machine, but also from anywhere on the Internet – using a wide variety of machine architectures.

<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, its features include a shell and the possibility to make backups. The adb software is available for 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.

Besides the Linux distributions designed for general-purpose use on desktops and servers, distributions may be specialized for different purposes including computer architecture support, embedded systems, stability, security, localization to a specific region or language, targeting of specific user groups, support for real-time applications, or commitment to a given desktop environment. Furthermore, some distributions deliberately include only free software. As of 2015, over four hundred Linux distributions are actively developed, with about a dozen distributions being most popular for general-purpose use.

References

  1. "3493/tcp" . Retrieved 2022-08-10.
  2. Price, Roger (August 2022). UPS management protocol. doi: 10.17487/RFC9271 . RFC 9271.
  3. Jim Klimov (22 May 2024). "NUT for Windows (GitHub wiki page)".
  4. Russell Kroll (25 November 2004). "Network UPS Tools: Acknowledgements" . Retrieved 2010-06-09.
  5. 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
  6. The README file for smartupstools-0.20.
  7. "Updates to NUT project leadership". Nut-upsdev (Mailing list). 13 November 2020.
  8. "NUT coding quality improvements". Nut-upsdev (Mailing list). 28 November 2020.
  9. "NUT v2.8.0 unveiled, just a few years (too many) in the making". Nut-upsdev (Mailing list). 26 April 2022.
  10. Jim Klimov (2 October 2022). "Jenkins is the way to build multi-platform NUT, and jenkinsfile-dynamatrix is the way to find what can be built today".
  11. Jim Klimov (28 July 2024). "Building NUT for in‐place upgrades or non‐disruptive tests (GitHub wiki page)".