何をやるか
UPS1台に複数のクライアントPCが接続されている状態で、停電時にすべてシャットダウンしたい
純正ソフトは高いのでフリーソフトで何とかしたい
WindowsマシンをUPSサーバーにしたい
追記:無償版ESXiでは自動シャットダウンできません。記事を書いた当時はこれを知りませんでした…
LinuxやRasPiでやっている方はおられるのですが、Windowsでやっている方が少ないのでメモとして残しておくことにしました。
[環境]
- サーバ:Windows10
- UPS:APC SmartUPS 750 (USB接続)
手順
Windows版NUTをインストールする
公式サイトにWindows用MSIが公開されているのでダウンロードする
https://networkupstools.org/download.html#_binary_packages
現時点で最新版はNUT-Installer-2.6.5-6.msi
MSIを実行するだけなので割愛
libusbの手動インストール
NUTのインストール中に以下のようにlibusbのインストールに失敗した場合は、libusbを手動インストールする
ここからダウンロードする
http://sourceforge.net/projects/libusb-win32/
UPSを接続した状態でinf-wizard.exeを管理者権限で実行する
途中、デバイスの選択画面が出るのでUPSを選択してNextを押す
作成したドライバをどこに保存するか聞かれるので、適当なフォルダに保存する
「Install Now」をクリックしてインストオールする
※管理者権限でないと失敗する
NUTにUPSを認識させる
libusbのドライバを作成したときにできたファイルのうち、以下の2点をNUT\binにコピーしてリネームする
- x86\libusb0.sys → NUT\bin\libusb.sys
- x86\libusb0_x86.dll → NUT\bin\libusb.dll
ここまで来たら、UPSの認識を確認する
(意外と知られていないのですが、Shift+右クリックで「PowerShellウィンドウをここで開く」のメニューが出ます)
nut-scanner.exeを実行して、USB接続しているUPSが認識されていることを確認する
ここで、「driver="usbhid-ups"」のところを確認しておく
※このウィンドウは後で使うので開いたままにしておいた方がいい
NUTの設定ファイルを作成
NUT\etcに設定ファイルのサンプルがあるので、それをコピーして作成する
※サンプルファイル中にあるコメントは省略しています
MODE=netserver
ups.confの[SU750]の部分は好きな名前、driver=のあとは先ほどnut-scanner.exeで確認したものを入れます
[SU750]
driver=usbhid-ups
port=auto
ユーザーを作成
[admin]
password = testpassword
actions = SET
instcmds = ALL
待ち受けIPアドレスとポートの設定
今回はアクセス制限無しにした
LISTEN 0.0.0.0 3493
自機のシャットダウン設定
※-t で遅延時間設定したほうがいいかも?
MONITOR SU750@localhost 1 admin testpassword master
SHUTDOWNCMD "C:\\WINDOWS\\system32\\shutdown.exe -s -t 0"
NUTの起動確認
サービスマネージャから「Network UPS Tools」を見つけて起動します
ログはイベントビューアーに出ています
起動エラーとか出ていなければ大丈夫だと思います
upsc.exe [先ほど付けたUPS名] を実行して、バッテリーの状態とかがズラズラと表示されればOK
ほかのクライアントの設定
ReadyNAS
ESXi 無償版
※これは本来、有償版でないとUPSによるシャットダウンができないのですが、まだ検証できていません。
NUTの公式サイトに、VMWare用のVIBパッケージが公開されているのでインストール
詳細は割愛しますが、Web管理画面からやるにはVIBをデータストアにアップロードし、ホストの「管理画面→パッケージ」からそのフルパスを入れます。
インストールできたら、詳細設定からサーバ設定を行う
※「Nut」と検索すると該当項目が見つかる
※今回はやむを得ない理由により仮想ゲスト上のWindowsにNUTサーバーを立てたため、「UserVars.NutFinalDelay」の値を長めに設定した
念のためESXi Shell上からもNUTサーバーへアクセスできるか確認しておく
# /opt/nut/bin/upsc upsname@hostname
シャットダウン動作確認
VPN上のリモートから設定してる都合上、停電テストとチューニングはまた今度
2020.9.27追記:
記事を書いた同時知らなかったのですが、無償版ESXiではホストの自動シャットダウンができません。
SSHログインしてシャットダウンコマンドをたたくようにしなければなりませんが、結局やらずじまいでダラダラとそのままにしてしまってます。。