Linuxホームサーバー編
No.11 自動で止めるにはどうするの?1
(考え方)

2005,3/21 完成


ということで無事に遠隔起動、遠隔シャットダウンができるようになりました。
一旦は「これで家庭内サーバー完成だ!」と喜んだものの、よーく考えたら
sambaサーバーを使うのは私だけではありません。
パソコンど素人のかみさんや子供達も共有フォルダーとしてこのサーバーを
使うということを忘れていました。

サーバーを立ち上げるのはまだOKです。
クライアントパソコンを立ち上げるときにWOLでVineパソコンを遠隔起動して
あげれば自動でsambaが立ち上がります。(図1参照)
問題はサーバーをシャットダウンするタイミングをどうするか、という事です。


【 図1:sambaサーバーを立ち上げるの図 】


前回の方法でsshを使って遠隔シャットダウンする事も可能ですが、
・「Tera Term Proを使ってsambaサーバーを落としてね。」という作業を
 かみさんや娘がちゃんとやるとは思えない。
 (自分自身ですらサーバーを落とし忘れするのは間違いなし!)
・仮にこどもPCとかあさんPCがクライアントとして立ち上がっていたとして
 こどもPCを止めるときに一緒にsambaサーバーをシャットダウンしてしまうと
 かあさんPCまでsambaサーバーを使えなくなってしまう。(図2参照)
という大きな問題が出てきます。


【 図2:勝手に止められちゃ使えないじゃん、の図 】

シャットダウンはクライアントまかせにしておくとろくな事になりそうもないので
Vine側で何とかする必要がありそうです。
サーバー側で比較的簡単にできそうなのは「毎晩夜中に自動でシャットダウンする。
という方法です。
これであればShutdownコマンドの時間設定コマンドを使って、

# shutdown -h 2:0 ←午前二時にシャットダウンする。

とかやればよさそうです。

しかーし、この方法にしても、
・朝1時間だけ使った場合でもsambaサーバーが落ちるのは夜中の2時。
 つまり15時間以上、サーバーが無駄に動いている、って事もありうるわけで
 やっぱり電気代がもったいないし、安全上も怖いものがある。
・大抵の場合夜中の2時であればクライアントPCは止まっている、とはいうものの
 それでも月に何度かは夜更かしをするので夜中の2時でも勝手にsambaサーバー
 を消されては困る!
という日も出てきてしまう。(図3参照)


【 図3:これじゃ夜中に使えない、の図 】


となると、
 「Vine Linux自身がつながっているクライアントPCがあるかないか調べて、
  誰もいなくなったら自分で自分をシャットダウンする。」

という方法が一番確実そうです。(図4参照)


【 図4:Vine君が自分で調べりゃ一番確実、の図 】

 1)VineLinuxマシンが5分とか10分おきにすべてのクライアントPCの
   IPアドレスに対してpingのコマンドを送る。
 2)1台でも反応が返ってくればまだクライアントマシンが動いている
   (=sambaにアクセスされる可能性がある。)ということで何もしない。
 3)反応が何もなければクライアントマシンがすべて停止したとみなして
   自分自身をシャットダウンする。
という動作になります。

「うむ!この方法が一番いいわい!」ポン!)←ひざを叩く音
と喜んだのはいいものの、いろんなサイトを調べてみましたがこういう
動作をするフリーソフトが見つかりません。 (T_T)
(簡単かつ必要性高そうなんですが、なんでないんでしょう??)
となると自分で作るしかないのか、と調べてみたところ、
 ” シェルスクリプト+cron “
という技を使えば実現できそうな事がわかってきました。

シェルスクリプトとは、実行するコマンド群をあらかじめテキスト文で作って
おいてまとめて実行させる方法で条件分岐なども使えてDOSのバッチ
ファイルに似ています
。(実際はDOSがUNIXを真似したんでしょうけど。)
一方、cronというのはLinux上で動くデーモン(Windows風に言うとサービス)
定期的に特定のスクリプトを実行してくれるそうです。

シェルスクリプトでクライアントPCにpingを送って反応がなければシャットダウンする
というプログラムを作り、cronで10分おきにそのシェルスクリプトを実行すれば
目的が達成できそうではありませんか。 (^_^;)

ということで次回からシェルスクリプトにトライしたいと思います。
「コマンド入力は面倒だ〜」と言っていたのにいつの間にやらシェルスクリプトに
手を染める事になってしまいました。 (^_^;)


←戻る 進む→
ホームに戻る