一台の UPS と NAS と PC をすべて連携してシャットダウンさせたい2011/04/20 00:00

計画停電の件もあり、事前に TV 録画用 PC や NAS の電源を落とし忘れて外出することもあるだろうと、UPS を買いました。
当然、PC との連携機能があり、USB でつなぐことで、必要な場合に PC を自動で shutdown できます。

また、Buffalo の NAS もあり、なんとこれには UPS と USB でつないで必要な shutdown が出来る機能があります。しかも、複数の同社の NAS があれば、UPS とつないだ NAS をサーバにして、他の NAS も自動で shutdown できるという。これはすばらしい。

Buffalo の NAS は Embedded Linux で動いているので、ハードが壊れたり生産終了になっても、disk を他の Linux マシンに持って行けば RAID アレイのマウントも出来るだろうから、若干安心だし、定期自己診断機能や、メールでステータスを送ってくれたり、DLNA やユーザ別のアクセス権限管理、つながっている PC の動作に合わせて電源の自動 ON/OFF できるなど、至れり尽くせりなので買ったのだが、さらに UPS との連動機能があるというのはうれしい限りだ。
メーカではサポートしていないと謳っているが、4 port の USB ハブを介して、USB HDD、 プリンタ、 UPS とつないでいるが全く問題なく動作している。

ところが、UPS には USB の口が一つしかない。PC と NAS どちらにつなぐのが良いのか。出来ればすべて管理したい。
PC と NAS との電源連動が機能的にはあるが、NAS から PC を落とすことはあきらめるとしても、PC から NAS を落とすことは出来てもおかしくない。ところが、例えば NAS の RAID check 中に PC から NAS を落とそうとしても、公開されている機能を使うなら、Web 管理で login をしての操作で落とすことが出来るくらいで、自動化はちょっと困難そう。
これが出来そうなツールが Vector にあるが、最近の NAS では動作しない報告もインターネット上にあるので期待できない。

さて、どうしたものか。
でも、NAS 同士はネットワーク経由で他を落とすことが出来るではないか。
ということで、UPS からの信号をどうやって NAS 間同士でやり取りしているかを解析することにした。

Wireshark と WinPCap を使ってパケットモニタをする。すると、それらしいパケットは見つからない。よく考えれば、UPS 連動でのサーバ/クライアント間通信は、broadcast パケットでなければ、イーサネットハブ(switch)が送信先ポートにしか飛ばさないわけで、いわゆる「バカハブ」でもない限り、PC から NAS 間通信のパケットをモニタできるわけではない。いまさら 10Base-T のハブをこの解析目的のために 100円だったとしても買いたくないし、そもそもネットワークアナライザ的な装置の入手も出来ない。何か良い手はないか。

ということでアッサリ一週間が過ぎたとき、何とか NAS-PC-NAS のようなトポロジでつなぐことが出来ればモニタできるのにな、とふと思い、そういえば USB 接続の 100BaseT のアダプタをたまたま持っていることを思い出し、これに Windows のネットワークブリッジ機能を使えば、NAS-PC-NAS 接続が出来そうである。やるとあっさりつながり、Wireshark でのモニタが出来るようになった。

あとは簡単である。かなりシンプルなやり取りを NAS 間でしていることがわかったので、同じやり取りをするプログラムを組めば、NAS-PC 間で UPS の情報を共有できるので、一つの USB 接続で一蓮托生で shutdown できる。

早速作ってみたので、アップロードしておきます。

B-NAS Utility ver 1.0.0
http://www.ne.jp/asahi/net/pockey/program/bnasutils-1.0.0.zip

UPS を PC とつなぎ、PC を NAS shutdown 指令用のサーバとする物と、UPS を NAS とつなぎ、PC を NAS shutdown 指令のクライアントとする物の二つを作ってみました。

最初は PC をサーバとすることを考えてこれを先に作りましたが、現実には、他のノート PC から NAS へのアクセスがあり、NAS だけが立ち上がっていることが多く、PC だけ立ち上がっていることはほぼ無いため、NAS に UPS をつなげて使うため、PC をクライアントにするのも作りました。

これで停電でも面倒なことにならずに済みそうです。

コメント

_ 苅谷 豪 ― 2011/04/27 21:34

 有難うございました。
 きのうOMRON BY35Sを購入し、LS-WXL/R1とパソコンをつなごうと方法を探していいてこのページを見つけました。私もNASをUPSにつなぐ方にしました。
 はじめはPhaseが"0"のままでしたがNASの設定をしてないのに気が付きセットし、コンセントを抜いて試したら無事に両方ともシャットダウンしました。
 これで計画停電も安心です、ほんとにほんとにありがとうございました。

_ 管理人 ― 2011/05/15 22:40

苅谷さん、コメントありがとうございます。
うごいてよかったです。自分では試してアップロードはしていますが、PC の環境って人によって違うので、試した結果を頂けて良かったです。

機能を追加してアップしましたが、単にシャットダウンだけをしたいのであれば新しいものにする必要はありません。

_ こや ― 2012/04/20 12:39

こんにちは、CyberPowerというメーカーのCP725AVRLCD JPというUPSを使って、BuffaloのLS-WX1.0TL/R1というNASのシャットダウンをしたいと考えております。
当初、UPS付属CDに入っていたCyperPowerPersonalEditionというソフトを使おうと思っていましたが、NAS側でUPSを認識してくれなかった為、PC経由でシャットダウンさせる事に変更して、CyperPowerBusinessEditionというソフトをダウンロードして、シェルコマンド割り当てしましたが、どうもタスクマネージャのプロセス一覧を見る限りでは、二重起動されてしまっているようで、シャットダウンしてくれません。
cmdファイルを直接実行すると、正常にシャットダウンされるので、cmdファイルの記述は間違っていないと思います、また、cmdファイル内にmdコマンドを追記して、イベントを発生させると、指定したフォルダは作成されるので、cmdファイルとイベントの関連付けもきちんと動作していると思われます。
何か、良い方法があれば、ご教授お願い出来ませんでしょうか?
環境は、Windows2000 Professional SP4です、長文申し訳ありません、宜しくお願い致します。

_ 管理人 ― 2012/05/02 11:21

こやさん、こんにちは。

cmd ファイル(バッチファイルですよね?)の実行とは、
bnasshutd.exe -shutdown
でいいですか?

CyperPowerPersonalEdition というソフトから、bnasshutd.exe を直接起動することはできないですか? もちろんコマンドラインオプションとして -shutdown を指定できれば、ですが。

_ こや ― 2012/05/02 17:26

こんにちは、ご返答ありがとうございます。
残念ながら、CyperPowerPersonalEditionから直接プログラムを起動する事は出来ないようです。

また、cmdファイルの内容は、<フルパス>bnasshutd.exe -shutdownです。
以上、宜しくお願い致します。

_ 管理人 ― 2019/11/07 10:11

「素人ひとり情シス」 様 (2019-09-20 16:56:19) - 頂いたコメントを間違えて削除してしまいました、、、コメントありがとうございます。せっかくなので、今までの累積アップデートを記事にて公開しました。

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://gethtmlw.asablo.jp/blog/2011/04/20/5815004/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。