ネットワーク管理ツール(NUT)をゼロからセットアップして、ローカルに接続されたUPSを管理する

例としてEaton 5E650iUSB UPSを使用したLinuxでのネットワークUPSツールの構成



説明



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:idProduct0463: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:フィールドに表示され、値を取ることができます。









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.disablebeeper.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をソケットから引き裂いてテストできます。








All Articles