説明
Linux NUTサービス(ネットワークUPSツール)は、さまざまな無停電電源装置(以下UPS)の監視および制御プログラムのセットです。 サポートされているモデルの完全なリストは、/ usr / share / nut / driver.listファイル内のドライバーのリストを見ると取得できます。
このマニュアルでは、UbuntuのようなディストリビューションでのEaton 5E 650iUSB UPSの例を使用して、ネットワークで電圧が失われた場合にNUTエージェントによってPCを無効にする方法について説明します。 他のディストリビューションで使用するには、ディストリビューションのパッケージマネージャーを使用するか、ソースコードからコンパイルします。 Network UPS Toolsの最新バージョンは、リンクリンクからGitHubにダウンロードできます。
NUTをインストール
まず、NUTをインストールする必要があります。
root@hostname~# apt install nut
NUT構成ファイルを含むフォルダーのバックアップコピーを作成します。
root@hostname~# cp -r /etc/nut /etc/nut.orig
次に、UPSがリモートコンピューターではなくこのコンピューターに接続されていることを示すディレクティブを追加します。
root@hostname~# echo "MODE=standalone" > /etc/nut/nut.conf
UPSをコンピューターに接続し、 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
UPSがNUTサービスでサポートされているかどうかを探しています。 手動で表示するか、UPSのブランド名を含む行を表示できます。例:
root@hostname~# grep Eaton /usr/share/nut/driver.list ... "Eaton" "ups" "5" "5E650iUSB" "USB port" "usbhid-ups" ...
ドライバーを決定したので、NUTを構成できます。
構成ファイルの保護
NUT構成ファイルに正しい許可と所有者を設定する必要があります
root@hostname~# chown root:nut /etc/nut/* root@hostname~# chmod 640 /etc/nut/*
ナットのセットアップ
ドライバー、接続方法、シャットダウン時間の設定
/etc/nut/ups.confファイルの最後に行を追加するか、次の内容で新しい行を作成します。
root@hostname~# nano /etc/nut/ups.conf # NUT. [eaton] # driver = usbhid-ups # . port = auto # offdelay = 90 # ondelay = 5 # desc = "Eaton 5E 650iUSB"
USBを介したUPSへのUSB NUTシステムグループアクセスの構成
NUTがUPSのUSBインターフェースにアクセスできるようにするには、 udevのアクセスルールを記述する必要があります。
udevはLinuxデバイス管理サブシステムです。 udevのおかげで、現在接続されているデバイスのみが/ devフォルダーにあります。
コマンドを実行する
root@hostname~# lsusb
UPSに対応する行を見つけます。 この例では、これは
Bus 001 Device 002: ID 0463:ffff MGE UPS Systems UPS
IDの後にidVendor:idProduct ( 0463:ffff )
次に、 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"
ルールを作成したら、 udevサービスを再起動する必要があります。
root@hostname~# service udev restart
その後、UPSからUSBケーブルを取り外して再接続します。 その後、コマンドを実行して、 udevルールの状態を確認します。
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
出力がほぼ同じであれば、すべてが正しく構成されています。
NUTへの接続用のNUTアドレスとリスニングポートを構成する
/etc/nut/upsd.confファイルの最後に行を追加するか、次の内容で新しい行を作成します。
root@hostname~# nano /etc/nut/upsd.conf # Loopback 3493 LISTEN 127.0.0.1 3493
LISTENは大文字で書く必要があります。そうしないと何も機能しません。
NUTにアクセスするためのユーザープロファイルの構成
ログインおよびホームフォルダーなしでUIDが1000未満のユーザーupsmonitorを作成します。これにより、ユーザーログイン画面ではなく、 ナットグループのGIDを持つサービスと見なされます。
nutのGIDを確認します。
root@hostname~# cat /etc/group | grep nut:x: nut:x:134:
次に、ユーザーのUIDを取得します。 339などのプログラムでほとんど使用されないものを選択するか、実行します。
root@hostname~# cat /etc/passwd | grep [ 100 1000]
何も出力されない場合、UIDは無料であり、 upsmonitorユーザーの作成に使用できます。
root@hostname~# useradd -d /dev/null -s /usr/sbin/nologin -u 339 -g 134 -p UPSPASS upsmonitor
次に、このユーザーをNUTユーザープロファイルファイル/etc/nut/upsd.usersに追加します。
root@hostname~# nano /etc/nut/upsd.users # [upsmonitor] # password = UPSPASS # , .. actions = SET # upscmd instcmds = ALL # NUT upsmonitor master
NUTモニタリング設定
/etc/nut/upsmon.confファイルの最後に行を追加するか、次の内容で新しい行を作成します。
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
接続テスト
UPSがその状態について報告できるものを見てみましょう。
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
すべてのフィールドは多かれ少なかれ明白であるか、以前に構成ファイルで定義されていました。 UPSステータスコードはups.status:フィールドに表示され、値を取ることができます。
- OL-システムはネットワークによって駆動されます。
- OB-システムはバッテリーで動作します。
- LB-システムは放電したバッテリーで動作します。
UPSの内部コマンドと変数
UPSは、 upscmdコマンドを使用してコンソールから直接コマンドを発行できます。 コマンドを実行すると、使用可能なコマンドのリストを取得できます。
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
ブザー音*設定は、電圧損失の場合にUPSのアラームを制御し、 load.offはPCをすぐにシャットダウンし、 load.off.delay遅延は秒単位でPCをシャットダウンします。shutdown.stop -PCのシャットダウンプロセスを中断するコマンド。
一部のUPSには、バッテリーテストやshutdown.returnなど、他のオプションがあります。この場合、コンピューターの電源はオフになりますが、UPSは電源がネットワークに戻るとすぐにPC開始信号を送信します。 これを機能させるには、対応する機能(通常は電源設定領域のどこかにあります)をPCのBIOSで有効にする必要があります。
たとえば、電源が切れたらUPSのきしみ音をオフにします。
root@hostname~# upscmd -u upsmonitor -p UPSPASS eaton@localhost beeper.disable
有効にするには、 beeper.disableをbeeper.enableに置き換えます。
NUT Task Scheduler upsschedの構成
/etc/nut/upssched.confファイルの最後に行を追加するか、次の内容で新しい行を作成します。
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
ここで、スクリプト/etc/nut/cmd.shが必要です 。 それを作成し、権限を設定して入力します。
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
おわりに
これでセットアップは完了です。 UPSをソケットから引き裂いてテストできます。