平成23年4月3日 日曜日

白箱の連動シャットダウン

Filed under: たわごと, プログラミング — とめくぎ @ 16:10:14

原発が被災し電気が足らない訳で、計画停電になりました。
齢60の親父は昔はしょっちゅう停電したぞ!1週間ぐらい!と言っているが・・・・。(それは電気代払えなくて停められてただけじゃ)
引込み線の電線盗まれて停電したこともあったそうで。

そんなわけで、自宅サーバやファイルサーバを動かすUPSをキチンと設定すると共に
ファイルサーバの連動シャットダウンに挑戦します。

サーバのOSはFreeBSD、UPSは三菱のなので、portsに純正のツールがあるのでそれをインストールする。
cd /usr/ports/sysutils/freqsdwn
make install clean
で設定をして終わり。
ケーブルは指定の物とは弱冠違うが動作した。ポート名称を間違えないように。

続いてファイルサーバである白箱を連動シャットダウンする。
白箱の中身はDebianなので、少々の小細工で連動シャットダウンできそう。

とりあえず、白箱にシャットダウン用アカウントを作成し、UPSの繋がるFreeBSDのサーバから
そのアカウントにパスなしでログオンしてシャットダウンコマンドを実行するという流れ。

以下にざっと手順をメモる。間違いとか有るかも。

1、白箱にシャットダウン専用アカウントを作成する
su になる
useradd shutdown
mkdir /home/shutdown/
mkdir /home/shutdown/.ssh/
chown shutdown /home/shutdown/
chown shutdown /home/shutdown/.ssh/
touch /home/shutdown/.ssh/authorized_keys

2、sshdの設定変更
vi /etc/ssh/sshd_config
PermitEmptyPasswordsのnoをyesに変更し、sshdを再起動

3、UPSが繋がっているサーバ側で公開キー作成
suになる
cd ~/.ssh
ssh-keygen -t rsa -f glanshutdown
本当はssh-copy-idが利けば良かったのですがBSDでは利かなかったので、
次で手動コピーする

4、shutdownユーザーの公開キーファイル修正
su - shutdownでshutdown ユーザーになる。
~/.ssh フォルダと~/.ssh/authorized_keys を所有者だけアクセス許可する。
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
3で出来上がったglanshutdown.pubの
内容を白箱の/home/shutdown/.ssh/authorized_keysにコピぺする。
exit

5、パス無し接続テスト
UPSが繋がっているサーバ側から
ssh -i /root/.ssh/glanshutdown shutdown@192.168.0.xxx(白箱のIPアドレス)
でパスなし接続できるか確認する。

6、白箱にシャットダウンスクリプトを作成
5での接続が問題なければ、白箱にシャットダウンスクリプトを作成する。
su - shutdown
vi /home/shutdown/shutdown.sh
#!/bin/sh
/sbin/shutdown -h now

chmod 750 /home/shutdown/shutdown.sh
chmod u+s /sbin/shutdown
exit

7、パスワードファイルの編集
白箱側のパスワードファイルを開き、
ログイン時に6で作成したスクリプトを実行するように変更。

suでパスワードファイルを開く。
vi /etc/passwd
shutdown:x:0:0:shutdown:/:/home/shutdown/shutdown.sh

8、UPSが繋がっているサーバ側に連動スクリプト作成
UPSが繋がっているサーバ側にrc.glantankを作成。
vi /etc/rc.shutdown.glantank
#!/bin/sh
ssh -o “ConnectTimeout=5″ -i /root/.ssh/glanshutdown shutdown@192.168.0.xxx(白箱のIPアド\
レス)

chmod +x /etc/rc.shutdown.glantank

-o “ConnectTimeout=5″がミソ。(時間は要調整)
白箱が既に止まってるときに、シャットダウンが長引くと
UPS側のサーバが道連れになるかもしれないし、UPSにもやさしくないので。

/etc/rc.glantank
で実行してみて白箱が停止すれば完了。
※スイッチ操作等のように電子音が鳴らないので注意。
2011-04-09追記>
buzcont というコマンドで鳴らすことが出来るみたい。
/initrd/usr/local/bin/buzcont 50 50 4
こんな感じでshutdown.shに追記するとブザーを鳴らせるでしょう。

9、作成したシャットダウンスクリプトを呼び出す設定をする
シャットダウンが成功したら/etc/rc.shutdownから呼び出す設定する。

/etc/rc.shutdownの最後、UPSのシャットダウンスクリプト「/etc/rc.freqdown」を呼ぶ前に記述する。
/etc/rc.glantank

以上

コメント (0) »

この記事にはまだコメントがついていません。

コメント RSS トラックバック URL

コメントをどうぞ

HTML convert time: 0.094 sec. Powered by WordPress ME