Beschreibung
Der Linux NUT-Dienst (Network UPS Tools) besteht aus einer Reihe von Überwachungs- und Steuerungsprogrammen für verschiedene unterbrechungsfreie Netzteile (im Folgenden: USV). Eine vollständige Liste der unterstützten Modelle finden Sie in der Liste der Treiber in der Datei /usr/share/nut/driver.list .
Das Handbuch beschreibt am Beispiel der USV Eaton 5E 650iUSB auf Ubuntu-ähnlichen Verteilungen, wie das Herunterfahren des PCs durch den NUT-Agenten bei Spannungsverlust im Netzwerk deaktiviert wird. Verwenden Sie zur Verwendung unter anderen Distributionen den Paketmanager Ihrer Distribution oder kompilieren Sie aus Quellcodes. Die neueste Version der Network UPS Tools kann über den Link Link auf GitHub heruntergeladen werden.
Installieren Sie die MUTTER
Zuerst müssen Sie NUT installieren:
root@hostname~# apt install nut
Erstellen Sie eine Sicherungskopie des Ordners mit den NUT-Konfigurationsdateien:
root@hostname~# cp -r /etc/nut /etc/nut.orig
Fügen Sie nun eine Anweisung hinzu, die angibt, dass die USV an diesen Computer und nicht an den Remote-Computer angeschlossen ist:
root@hostname~# echo "MODE=standalone" > /etc/nut/nut.conf
Schließen Sie nun die USV an den Computer an und sehen Sie die Ausgabe des Befehls lsusb :
root@hostname~# lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 004: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse Bus 001 Device 003: ID 1a2c:2124 China Resource Semico Co., Ltd Bus 001 Device 002: ID 0463:ffff MGE UPS Systems UPS
Wir suchen, ob die USV vom NUT-Dienst unterstützt wird. Sie können es entweder manuell anzeigen oder Linien mit dem Markennamen der USV anzeigen, zum Beispiel:
root@hostname~# grep Eaton /usr/share/nut/driver.list ... "Eaton" "ups" "5" "5E650iUSB" "USB port" "usbhid-ups" ...
Nachdem wir uns für den Treiber entschieden haben, können Sie die NUT konfigurieren.
Schutz der Konfigurationsdatei
Die richtigen Berechtigungen und Eigentümer sollten für NUT-Konfigurationsdateien festgelegt werden
root@hostname~# chown root:nut /etc/nut/* root@hostname~# chmod 640 /etc/nut/*
NUT Setup
Einstellen des Treibers, der Verbindungsmethode und der Abschaltzeit
Fügen Sie die Zeilen am Ende der Datei /etc/nut/ups.conf hinzu oder erstellen Sie eine neue mit dem folgenden Inhalt:
root@hostname~# nano /etc/nut/ups.conf # NUT. [eaton] # driver = usbhid-ups # . port = auto # offdelay = 90 # ondelay = 5 # desc = "Eaton 5E 650iUSB"
Konfigurieren des NUT-Systemgruppenzugriffs auf die USV über USB
Damit die NUT auf die USB-Schnittstelle der USV zugreifen kann, müssen Sie eine Zugriffsregel für udev schreiben.
udev ist ein Linux-Geräteverwaltungssubsystem. Dank udev befinden sich derzeit nur verbundene Geräte im Ordner / dev .
Führen Sie den Befehl aus
root@hostname~# lsusb
und finden Sie die Leitung, die der USV entspricht. In unserem Beispiel ist dies
Bus 001 Device 002: ID 0463:ffff MGE UPS Systems UPS
wo nach ID geht idVendor: idProduct ( 0463: ffff )
Erstellen Sie nun eine Regeldatei für udev :
root@hostname~# /etc/udev/rules.d/90-nut-ups.rules # Eaton 5E650iUSB ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0463", ATTR{idProduct}=="ffff", MODE="0660", GROUP="nut"
Nach dem Erstellen der Regel müssen Sie den udev- Dienst neu starten:
root@hostname~# service udev restart
Trennen Sie danach das USB-Kabel von der USV und schließen Sie es wieder an. Führen Sie danach den Befehl aus, um den Zustand der udev- Regel zu überprüfen:
root@hostname~# upsdrvctl start Network UPS Tools - UPS driver controller 2.7.4 Network UPS Tools - Generic HID driver 0.41 (2.7.4) USB communication driver 0.33 Using subdriver: MGE HID 1.39
Wenn die Ausgabe ungefähr gleich ist, ist alles richtig konfiguriert.
Konfigurieren Sie NUT-Adressen und -Ports für das Abhören von NUT-Verbindungen
Fügen Sie die Zeilen am Ende der Datei /etc/nut/upsd.conf hinzu oder erstellen Sie eine neue mit dem folgenden Inhalt:
root@hostname~# nano /etc/nut/upsd.conf # Loopback 3493 LISTEN 127.0.0.1 3493
Denken Sie daran, dass LISTEN in Großbuchstaben geschrieben sein muss, sonst funktioniert nichts.
Konfigurieren Sie das Benutzerprofil für den Zugriff auf NUT
Wir erstellen den Benutzer- Upsmonitor ohne das Recht auf Anmeldung und Home-Ordner mit einer UID von weniger als 1000, sodass er als Dienst betrachtet wird und nicht auf dem Benutzeranmeldebildschirm und mit der GID der Nussgruppe .
Finden Sie die GID der Nussgruppe heraus :
root@hostname~# cat /etc/group | grep nut:x: nut:x:134:
Jetzt holen wir die UID für den Benutzer ab. Entweder wählen wir eine, die von keinem Programm verwendet wird, zum Beispiel 339, oder wir führen Folgendes aus:
root@hostname~# cat /etc/passwd | grep [ 100 1000]
und wenn nichts angezeigt wird, ist die UID kostenlos und kann zum Erstellen des Upsmonitor- Benutzers verwendet werden:
root@hostname~# useradd -d /dev/null -s /usr/sbin/nologin -u 339 -g 134 -p UPSPASS upsmonitor
Fügen Sie diesen Benutzer nun der NUT-Benutzerprofildatei /etc/nut/upsd.users hinzu :
root@hostname~# nano /etc/nut/upsd.users # [upsmonitor] # password = UPSPASS # , .. actions = SET # upscmd instcmds = ALL # NUT upsmon master
NUT-Überwachungseinstellungen
Fügen Sie die Zeilen am Ende der Datei /etc/nut/upsmon.conf hinzu oder erstellen Sie eine neue mit dem folgenden Inhalt:
root@hostname~# nano /etc/nut/upsmon.conf # eaton localhost upsmonitor MONITOR eaton@localhost 1 upsmonitor UPSPASS master # MINSUPPLIES 1 # NUT, NOTIFYCMD /sbin/upssched # POLLFREQ 5 # POLLFREQALERT 5 # NUT HOSTSYNC 15 # NUT "" DEADTIME 15 # , , POWERDOWNFLAG /etc/killpower # NOTIFYMSG ONLINE "UPS %s on line power" # NOTIFYMSG ONBATT "UPS %s on battery" # NOTIFYMSG LOWBATT "UPS %s battery is low" # NOTIFYMSG FSD "UPS %s: forced shutdown in progress" # NOTIFYMSG COMMOK "Communications with UPS %s established" # , , USB NOTIFYMSG COMMBAD "Communications with UPS %s lost" # NOTIFYMSG SHUTDOWN "Auto logout and shutdown proceeding" # NOTIFYMSG REPLBATT "UPS %s battery needs to be replaced" # NOTIFYMSG NOCOMM "UPS %s is unavailable" # NUT upsmon NOTIFYMSG NOPARENT "upsmon parent process died - shutdown impossible" # , NOTIFYFLAG. # SYSLOG , /var/log/syslog # WALL # EXEC , /etc/nut/upsshed.conf, NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC NOTIFYFLAG FSD SYSLOG+WALL+EXEC NOTIFYFLAG COMMOK SYSLOG+WALL+EXEC NOTIFYFLAG COMMBAD SYSLOG+WALL+EXEC NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC NOTIFYFLAG REPLBATT SYSLOG+WALL+EXEC NOTIFYFLAG NOCOMM SYSLOG+WALL+EXEC NOTIFYFLAG NOPARENT SYSLOG+WALL+EXEC # (12 ) RBWARNTIME 43200 # NUT , NOCOMM 300 NOCOMMWARNTIME 300 # FINALDELAY 5
Verbindungstest
Mal sehen, was die USV über ihren Zustand berichten kann:
root@hostname~# upsc eaton@localhost battery.charge: 100 battery.runtime: 1964 battery.type: PbAc device.mfr: EATON device.model: 5E 650i device.type: ups driver.name: usbhid-ups driver.parameter.offdelay: 60 driver.parameter.pollfreq: 30 driver.parameter.pollinterval: 2 driver.parameter.port: auto driver.parameter.synchronous: no driver.version: 2.7.4 driver.version.data: MGE HID 1.39 driver.version.internal: 0.41 input.voltage: 228.0 outlet.1.status: on outlet.desc: Main Outlet outlet.id: 1 outlet.switchable: no output.frequency: 50.0 output.frequency.nominal: 50 output.voltage: 226.0 output.voltage.nominal: 230 ups.beeper.status: enabled ups.delay.shutdown: 60 ups.firmware: 03.08.0018 ups.load: 18 ups.mfr: EATON ups.model: 5E 650i ups.power.nominal: 650 ups.productid: ffff ups.start.battery: yes ups.status: OL ups.timer.shutdown: -1 ups.vendorid: 0463
Alle Felder sind mehr oder weniger offensichtlich oder wurden von uns zuvor in den Konfigurationsdateien definiert. USV-Statuscodes werden im Feld ups.status: angezeigt und können folgende Werte annehmen:
- OL - das System wird von einem Netzwerk gespeist;
- OB - das System wird mit Batteriestrom betrieben;
- LB - das System wird mit einer entladenen Batterie betrieben.
Interne USV-Befehle und -Variablen
Die USV kann mit dem Befehl upscmd Befehle direkt von der Konsole aus ausgeben . Eine Liste der verfügbaren Befehle erhalten Sie, indem Sie den folgenden Befehl ausführen:
root@hostname~# upscmd -l eaton@localhost Instant commands supported on UPS [eaton]: beeper.disable - Disable the UPS beeper beeper.enable - Enable the UPS beeper beeper.mute - Temporarily mute the UPS beeper beeper.off - Obsolete (use beeper.disable or beeper.mute) beeper.on - Obsolete (use beeper.enable) load.off - Turn off the load immediately load.off.delay - Turn off the load with a delay (seconds) shutdown.stop - Stop a shutdown in progress
Der Piepser. * Die Einstellungen steuern den Alarm der USV im Falle eines Spannungsverlusts. Load.off schaltet den PC sofort aus. Load.off.delay verzögert sich in Sekunden vor dem Herunterfahren des PCs. Shutdown.stop - Befehl zum Unterbrechen des Herunterfahrens des PCs.
In einigen USVs gibt es andere Optionen, z. B. einen Batterietest oder eine Abschaltung . In diesem Fall wird der Computer ausgeschaltet, aber die USV sendet ein PC-Startsignal, sobald die Stromversorgung wieder hergestellt ist. Damit dies funktioniert, muss im BIOS des PCs die entsprechende Funktion aktiviert sein, die sich normalerweise irgendwo im Bereich der Energieeinstellungen befindet.
Schalten Sie beispielsweise das Quietschen der USV aus, wenn der Strom ausfällt:
root@hostname~# upscmd -u upsmonitor -p UPSPASS eaton@localhost beeper.disable
Ersetzen Sie zum Aktivieren beeper.disable durch beeper.enable .
Konfigurieren von NUT Task Scheduler Upssched
Fügen Sie die Zeilen am Ende der Datei /etc/nut/upssched.conf hinzu oder erstellen Sie eine neue mit dem folgenden Inhalt:
root@hostname~# nano /etc/nut/upssched.conf # , CMDSCRIPT /etc/nut/cmd.sh PIPEFN /tmp/upspipe LOCKFN /tmp/upslock # case /etc/nut/cmd.sh AT COMMBAD * EXECUTE commbad AT COMMOK * EXECUTE commok AT NOCOMM * EXECUTE nocomm # . AT ONBATT * EXECUTE powerout # , shutdownnow cmd.sh AT ONBATT * START-TIMER shutdownnow 90 AT LOWBATT * EXECUTE shutdowncritical AT ONLINE * CANCEL-TIMER shutdownnow AT ONLINE * EXECUTE powerup
Jetzt brauchen wir das Skript /etc/nut/cmd.sh . Erstellen Sie es, legen Sie die Rechte fest und füllen Sie es aus:
root@hostname~# touch /etc/nut/cmd.sh root@hostname~# chmod 666 /etc/nut/cmd.sh root@hostname~# nano /etc/nut/cmd.sh #!/bin/sh # logger syslog case $1 in commbad) logger "UPS communications failure" ;; commok) logger "UPS communications restored" ;; nocomm) logger "UPS communications cannot be established" ;; powerout) # logger "UPS on battery. Shutdown in 90 seconds...." upscmd -u upsmonitor -p UPSPASS eaton@localhost shutdown.return ;; shutdownnow) logger "UPS has been on battery for 120 seconds. Starting orderly shutdown" # upsmon -c fsd ;; shutdowncritical) logger "UPS battery level CRITICAL. Shutting down NOW!!!!" # upsmon -c fsd ;; powerup) logger "UPS on line. Shutdown aborted." # upscmd -u upsmon -p pass mustek@localhost shutdown.stop ;; *) logger "Unrecognized command: $1" ;; esac
Fazit
Damit ist die Einrichtung abgeschlossen. Sie können testen, indem Sie die USV aus der Steckdose ziehen.