2013年2月10日

【FHC】Linuxマシンをシャットダウンさせてみる


FutureHomeControllerが我が家に来て1週間経ちました。

先週は資格の勉強とかで忙しくてFHC弄りに時間を回せなかったのですが、昨日ようやく一区切りついたので、今日はバリバリ弄り倒してました。

ひとまずは記事タイトルの通り、LinuxマシンをFHCからシャットダウンさせる方法について紹介します。


Windowsであれば、FHCコマンダー経由で、shutdown -s とでも打てばシャットダウンさせられると思いますので特に説明はしません。

Linux機もまぁsshで入ってshutdown -h nowを打てばいいんですがね。
シャットダウンさせるたびにいちいちその手順を踏まなければならないのも面倒なので、今回はshutdownだけさせるアカウントを作って、sshでログインにした瞬間にシャットダウンする感じで作って見ました。

【Linux側の設定】

まずはシャットダウンだけさせるユーザアカウントの作成に関しては以下のページを参考にさせてもらい作成しました。
shutdownアカウントによる自動シャットダウン - Linux サーバ構築マニュアル

一応大まかな手順を書いておくと、こんなかんじです。

1.シャットダウンスクリプトの作成
# mkdir /usr/local/system
# vi /usr/local/system/shutdown.sh


#!/bin/sh
/sbin/shutdown -h now

# chmod -R 750 /usr/local/system
# chmod u+s /usr/local/system/shutdown.sh

2.ユーザー「shutdown」の作成
# useradd -G root shutdown (←リンク先と異なりrootグループを主ではなく補助にしています)
# passwd shutdown (←状況により任意)
# vi /etc/passwd

shutdown:x:1001:1001:shutdown:/home/shutdown:/bin/bash
    ↓
shutdown:x:1001:1001:shutdown:/home/shutdown:/usr/local/system/shutdown.sh

とりあえずここまででログインしただけでシャットダウンするマシンにすることができました。

このあと自分はパスワードスルーを事前共有鍵認証で行ったわけですが、よく考えればこのマシンは外部公開しているわけではないのでそんなにがっつり行う必要なかったですね。
まぁいいや。後学後学。

で、Linux側の設定は完了したので、次はFHC側の設定

【FHC側の設定】

とりあえず自作スクリプトをさらっと書く
FHCのTOPから→設定→コマンド設定を行う
新規作成から適当なスクリプト名(自分はssh_shutdown.jsとした)
あとは適当に

/* ssh_shutdown.js */

///@args1@must@対象ホストのIPアドレス@例:192.168.1.2@text
///@args2@optionl@対象ホストのポート番号@例:22@int
///@args3@optionl@秘密鍵のファイル名@例:id_rsa
function main(host, port, key)
{
command = "ssh shutdown@" + host;
if (port != 0) command = command + " -p " + port;
if (key != "") command = command + " -i /home/root/.ssh/" + key;
kernel_execute_local(command);
}
/* ここまで */

保存したら次はリモコンの設定から、他の家電と同じようにリモコンの作成を行なっていきます。

(リモコンの作成の仕方については省略。わかんねーやつは公式howtoのwolの設定方法でも参考にしてください)

これで無事PCをFHC経由で電源切ることに成功しました。よかったね。