ubuntuusers.de

NUT

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

./nut_logo.png NUT 🇬🇧 ist ein Client/Server-Framework zur Ansteuerung und Verwaltung einer USV (unterbrechungsfreie Stromversorgung, englisch: UPS). Unterstützt werden über 100 verschiedene Hersteller 🇬🇧 und Modelle. Einige Programmkomponenten arbeiten normalerweise als Systemdienst (Daemon), d.h. diese werden automatisch beim Einschalten des Rechners gestartet.

Zunächst sollte geklärt werden, ob man ein zur USV passendes (serielles oder USB-) Kabel hat. Bauanleitungen für evtl. fehlende Kabel findet man auf der Projektseite 🇬🇧.

Das Konfigurieren und Testen der USV sollte anfangs nur passiv geschehen. Das heißt, dass die USV nur über das Datenkabel angeschlossen ist. Diese Anleitung behandelt beispielhaft eine "APC Smart-UPS", deshalb müssen einige Angaben entsprechend angepasst werden.

Folgende Programme werden verwendet:

Installation

Server

Folgendes Paket wird für die Installation benötigt [1]:

  • nut

Paketliste zum Kopieren:

sudo apt-get install nut 

Oder mit apturl die Pakete installieren. Link: apt://nut

Optional können weitere Zusatzpakete installiert werden:

  • nut-cgi (Weboberfläche, siehe unten)

  • nut-snmp (SNMP-Überwachung)

  • nut-xml (universe, für spezielle Modelle von Eaton oder MGE)

  • nut-ipmi (universe, für IPMI, erst ab Ubuntu 14.04)

Paketliste zum Kopieren:

sudo apt-get install nut-cgi nut-snmp nut-xml nut-ipmi 

Oder mit apturl die Pakete installieren. Link: apt://nut-cgi,nut-snmp,nut-xml,nut-ipmi

Danach sollte man (wenn noch nicht vorhanden) die Beispieldateien aus /usr/share/doc/nut/examples/ nach /etc/nut/ kopieren. Damit die Dateien auch genutzt werden können, müssen sie nur noch umbenannt werden: .sample im Dateinamen löschen. Das Konfigurationsbeispiel von upsmon muss gegebenenfalls noch entpackt [2] werden. Dies geschieht z.B. mit [3]:

gzip -d upsmon.conf.sample.gz  

Damit ist die Installation des Servers abgeschlossen und es kann mit der Konfiguration begonnen werden.

Konfiguration Server

Server in den Autostart aufnehmen

Dazu editiert [4] man /etc/default/nut wie folgt:

START_UPSD=yes
UPSD_OPTIONS=""
START_UPSMON=yes
UPSMON_OPTIONS=""

Treiber konfigurieren

Dazu editiert man die /etc/nut/ups.conf:

[apc]
  driver = apcsmart		# Treiber der verwendet werden soll
  port = /dev/ttyS0		# Port, an dem die USV angeschlossen ist (hier COM1)
  desc = "APC Smart-UPS"  	# Beschreibung der USV

Es gibt noch weitere Parameter, die man hier angeben kann. Diese kann man in der man-Page von ups.conf nachlesen. Eine Liste unterstützter USVs findet man unter Hardware compatibility list 🇬🇧.

Systemdienst konfigurieren

Dazu editiert man die /etc/nut/upsd.conf. Hier braucht nichts geändert werden, wenn die USV nur einen einzigen Rechner (Host) versorgt. Ansonsten kann man hier die Zugriffsrechte für das Netzwerk konfigurieren. Das sieht beispielsweise so aus:

ACL all 0.0.0.0/0			# komplettes Netzwerk
ACL localhost 127.0.0.1/32		# eigener Rechner
ACL netz 192.168.1.0/24		        # Netzwerksegment 1
ACL netz2 192.168.2.0/24		# Netzwerksegment 2

ACCEPT localhost			# erlaubt Zugriff von localhost
ACCEPT netz				# erlaubt Zugriff von netz
ACCEPT netz2		        	# erlaubt Zugriff von netz2
REJECT all				# verweigert Zugriff von all

Mit der Option LISTEN kann man noch eine bestimmte Netzwerkkarte angeben werden, auf der nur der Zugriff gestattet wird.

Benutzer einrichten

Dazu editiert man /etc/nut/upsd.users. Es bietet sich hier an, drei Benutzer anzulegen, und zwar einen "upsmaster" (der auf dem Server die Überwachung übernimmt), einen "upsslave" (der von den Clients die Überwachung übernimmt) und einen "upsadmin" (der Verwaltungsaufgaben übernehmen darf).

[upsmaster]				# Benutzername
  password = upsmaster    		# Passwort für den Benutzer
  allowfrom = localhost			# Zugriff von (man kann die ACLs verwenden)
  upsmon master		         	# Art des Zugriffs

[upsslave]
  password = upsslave
  allowfrom = netz netz2 localhost
  upsmon slave

[upsadmin]
  password = upsadmin
  allowfrom = localhost
  actions = SET
  instcmds = ALL

Experten-Info:

Die Benutzer in dieser Datei müssen nicht zwingend lokal auf dem Rechner existieren.

Statusdienst (Monitor) einrichten

Dazu editiert man die /etc/nut/upsmon.conf:

RUN_AS_USER root

Da das vorkompilierte NUT unter der Benutzerkennung nut erzeugt wurde, kann man einige Funktionen nicht richtig nutzen (z.B. den Zugriff auf den seriellen Port). Man kann zwar die Rechte und die dazugehörigen Benutzer auf dem Port zwar ändern, aber diese werden nach dem Neustart des PCs durch AppArmor wieder zurückgesetzt. Genau das selbe passiert auch unter /var/run/nut.

Als nächstes sagt man dem Monitor, was er sich anschauen soll:

MONITOR apc@localhost 1 upsmaster upsmaster master

Dies sagt dem Monitor, dass die USV "apc" am lokalen Rechner (wobei mind. 1 USV vorhanden sein muss) mit den Benutzer "upsmaster" und dem Passwort "upsmaster" abgefragt wird.

MINSUPPLIES 1

Gibt an, wie viele USVs mindestens verfügbar sein müssen.

SHUTDOWNCMD “/sbin/shutdown -h +0“

Der Befehl zum Herunterfahren des Systems.

NOTIFYCMD /sbin/upssched

Gibt an welches Programm gestartet werden soll, wenn ein bestimmtes Ereignis eintritt. Zu upsched später mehr.

POLLFREQ 5

Ist das Intervall in Sekunden, in dem der Monitor die USV abfragt.

POLLFREQALERT 5

Ist das Intervall in Sekunden, in dem der Monitor die USV abfragt, wenn die USV auf Alarm steht (bspw. die USV auf Batterie läuft).

HOSTSYNC 15

Ist die Zeit, die der Server wartet, dass die Clients ihre Verbindung trennen können, wenn FSD gesetzt worden ist (FSD wird gesetzt wenn z.B. die Batterie fast leer ist).

DEADTIME 15

Die Zeit die gewartet wird, wenn die USV nicht erreichbar ist (bevor sie als nicht verfügbar gilt). Sollte das 3-fache von POLLFREQ und POLLFREQALERT sein.

POWERDOWNFLAG /etc/killpower

Diese Datei wird vom Monitor erstellt, wenn der Rechner herunterfahren soll.

NOTIFYMSG ONLINE "USV-ONLINE"
NOTIFYMSG ONBATT "USV-AUF-BATTERIE"
# und so weiter ...

Hier werden die Nachrichten für bestimmte Ereignisse deklariert. Ereignisse können sein:

  • ONLINE

  • ONBATT

  • LOWBATT

  • FSD

  • COMMOK

  • COMMBAD

  • SHUTDOWN

  • REPLBATT

  • NOCOMM

  • NOPARENT

NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
# und so weiter ...

Dies sind die Aktionen, die durchgeführt werden, wenn ein Ereignis eintritt. SYSLOG gibt an, das das Ereignis ins Systemprotokoll geschrieben wird. WALL sendet Nachrichten an alle angemeldeten Benutzer am lokalen PC (siehe auch wall). EXEC gibt den Status an das Programm von NOTIFYCMD weiter. Wenn z.B. nur Nachrichten gesendet werden sollen, reicht WALL aus. Hier werden die selben Ereignisse verwendet wie bei NOTIFYMSG.

RBWARNTIME 43200

Ist die Zeit in Sekunden bevor die Meldung für den Batteriewechsel kommt.

NOCOMMWARNTIME 300

Ist die Zeit in Sekunden, wo die Meldung kommt das die USV nicht erreichbar ist. Diese Meldung wiederholt sich so lange bis die USV wieder erreichbar ist.

FINALDELAY 5

Ist die Zeit die gewartet wird, nachdem der SHUTDOWNCMD aufgerufen wird bevor er ausgeführt wird.

upssched verwenden

Bevor man die Datei /etc/nut/upssched.conf editiert, sollte man einen Ordner unter /etc/nut/ mit dem Namen upssched anlegen.

CMDSCRIPT /etc/nut/upssched/upsscript

Ist der Pfad zu dem Skript, was ausgeführt werden soll, wenn die Trigger (Schalter) gesetzt werden.

PIPEFN /etc/nut/upssched/upssched.pipe
LOCKFN /etc/nut/upssched/upssched.lock

Diese Dateien werden genutzt, um mit den Prozessen zu agieren. Sie werden automatisch erzeugt und gelöscht.

AT ONBATT * START-TIMER onbatt 90
AT ONLINE * CANCEL-TIMER onbatt
AT LOWBATT * EXEC battleer

In diesem Fall wird ein Timer gestartet, wenn die USV auf Batterie umschaltet. Dieser wartet 90 Sekunden, bevor er den Parameter onbatt an das CMDSCRIPT weiter gibt. Schaltet die USV wieder ONLINE, so wird der Timer abgebrochen. Wenn die USV Batterie niedrig ist, wird sofort das Skript mit dem Parameter battleer ausgeführt.

Beispiel Skript für upssched

Das Skript ist ein einfaches Beispiel für die Konfiguration:

1
2
3
4
5
6
7
8
9
#! /bin/sh
case $1 in
  onbatt)
    /sbin/shutdown -h +0;;
  battleer)
    /sbin/upssched fsd;;
  *)
    echo "Falscher Parameter";;
esac

Rechte ändern

Im Ordner /etc/nut sollten alle Dateien root gehören und die Gruppe nut Leserechte [5] haben. Dies geschieht mit

chmod -R 740 /etc/nut/*
chown -R root:nut /etc/nut/*
chmod -R 750 /etc/nut/upssched 

Testen der Einstellungen

Wenn man alles nach seinen Wünschen eingestellt hat, kann man nun den Rechner neu starten. Dann kann man mit “upsc apc“ den Status seiner USV auslesen. Als nächstes zieht man die Stromversorgung der USV ab, um zu sehen ob alles so funktioniert wie gewünscht. Wenn alles funktioniert, kann man nun die USV richtig an den Rechner anschließen.

Installation Client

Folgendes Paket wird für die Installation benötigt:

  • nut-client

Paketliste zum Kopieren:

sudo apt-get install nut-client 

Oder mit apturl die Pakete installieren. Link: apt://nut-client

In der Datei /etc/default/nut muss der Monitor auf YES gesetzt werden, der upsd muss auf no stehen.

Konfiguration Client

Daemon einrichten

Beim Client muss hier nichts eingetragen sein, also alles auskommentieren.

Monitor einrichten

Im Prinzip genau wie beim Server, nur das die Zeile von Monitor anders ist.

MONITOR apc@192.168.1.1 1 upsslave upsslave slave

Anstatt der IP-Adresse kann hier auch der Hostname angegeben werden, falls er aufgelöst werden kann.

upssched einrichten

Kann hier genau so genutzt werden wie beim Server.

Testen der Einstellungen

Rechner neu starten und mit:

upsc apc@192.168.1.1  

testen, ob die Daten ausgelesen werden können.

Administrative Werkzeuge

Man kann eine Web-Oberfläche für Nut installieren, um diese von einen beliebigen Ort im Netzwerk zu kontrollieren und Testläufe zu starten. Voraussetzung ist ein laufender Webserver.

Folgendes Paket wird für die Installation benötigt:

  • nut-cgi

Paketliste zum Kopieren:

sudo apt-get install nut-cgi 

Oder mit apturl die Pakete installieren. Link: apt://nut-cgi

Ist dies installiert, so kann man mit einem Webbrowser auf die gerade erstellte Seite von NUT zugreifen. Zum Beispiel:

http://localhost/nut

Für die Anmeldung gelten die Benutzernamen, die in ups.users eingerichtet wurden.

Hinweis:

Der Webserver sollte so eingerichtet werden, dass der Zugriff auf die Web-Oberfläche nur vom lokalen Netz erlaubt ist.

Diese Revision wurde am 7. Februar 2020 09:08 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Sicherheit, Server, Netzwerk