2007年09月01日
Wake On LanをWebブラウザで行う
先のエントリーでWOL(Wake On Lan)に成功したことを記したが、それをより効果的に利用出来るように考えて成功したので備忘録しておく。
要するに常時起動のVine Linuxマシンから、TVサーバのマシンの電源ONの制御をしようって考えだ。それをWebブラウザを使ってやりたいと言う話。
もちろんこの方法なら、ルーター越しのWOLも可能だということだ。職場などの出先のPCからはもちろん、最近の携帯電話ならブラウザが付いているのでそれも可能だと思う。技術的には大した事無いが一つの方法として参考になれば幸いである。
問題は私がPerlを全く理解していない事である。よってCGIもシェルスクリプトで書かざるを得ない。でも本当にそれって可能なのだか?調べてみたら同じことをやっている方のブログで「ルーターの外からwol」を発見したので、シェルスクリプトでCGIを書くのも可能なんだなと裏づけが取れたので実践することにした。
しかし、シェルスクリプトでCGIを書くのって本当は良くない方法らしいから、せめてベーシック認証をかけたディレクトリに設置することにした。ついでにhtmlファイルを置いてちょっとだけ見栄えもよくしてみる。実行ボタンをクリックするだけなんだが。
注意:下記にURLが出てきますが架空のものです。ハックしようとかしないでね。そもそも存在しないURLを例にしていますから、認証を破ってやろうなんて事は無駄です。
まず、wolコマンドを実行するシェルスクリプトを書いてしまおう。
難しいのは嫌なので極めてシンプルに書いてしまう。
$ which sh
/bin/sh
$ cd
$ vi wol.sh
wol.sh という名前で保存するとする
-----------------------------------------------
#!/bin/sh
wol 192.168.1.255 xx:xx:xx:xx:xx:xx
-----------------------------------------------
本当にwolが動くか確認しておこう
$ chmod 705 wol.sh
$ ./wol.sh
リモートで起動することに成功したら次のステップに進もう
既に公開しているWebサーバにスクリプトと、簡単なhtmlのページを作る。
ちなみに私はpublic_htmlディレクトリをベーシック認証して設置することにした。
(ベーシック認証についてはどこかに記した記憶があるので、ここでは書きません)
$ cd public_html/
$ vi wol.cgi
wol.cgi という名前で保存する(Perlではなくshで書いてる)
-------------------------------------------------
#!/bin/sh
echo Content-type: text/html
echo
echo "<title>sending wol</title>"
echo "<p>"
echo "sending wol to fluorite"
echo "..."
sh /home/wol/wol.sh
echo "..."
echo "</p>"
echo "<p>"
echo "done."
echo "</p>"
-------------------------------------------------
$ chmod 705 wol.cgi
Webブラウザ用にHTMLのページを作っておくとちょと自己満足に浸れそう(w
$ vi wol.html
wol.html という名前で保存する
-------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>WOL-SH</title>
</head>
<BODY BGCOLOR="#ffe0c0">
<H3 align="center">WOL-SH</H3>
<HR>
<p align="center">テレビサーバの電源をWake on LANで入れるっちゃ</p>
<form action="./wol.cgi" method="post" name="wol" id="wol">
<div align="center">
<input type="submit" name="Submit" value="送信">
</div>
</form>
<HR>
</body>
</html>
-------------------------------------------------
これで出来たのでWebブラウザからアクセスしてみた
http://www.sasapurin.com/~wol/wol.html
ベーシック認証がかかっていて、ユーザー名とパスワードを入力した
極めてシンプルなページとボタンが一個出てきたので、ボタンをクリックする。
Internal Server Error .......
なんじゃそりゃ~
httpdのエラーログ確認
Resource temporarily unavailable:
couldn't spawn child process: /home/wol/public_html/wol.cgi
チャイルドプロセスが作れないとかぬかしてるな..
そもそもシェルで書いたCGIは機能するんか?
$ ./wol.cgi
あらら、ちゃんとWOLでリモート起動がかかってメッセージも出てきた
Content-type: text/html
<title>sending wol</title>
<p>
sending wol to fluorite
...
...
</p>
<p>
done.
</p>
って事は、シェルスクリプト(sh)でCGIを書いているから、Apacheが拒否してるって感じだろうな。
そういえば、ExecCGIとかのところに、CGIファイルの拡張子を定義するところ(AddHandler)があったはず。
$ su -
# less /etc/httpd/conf/httpd.conf
/AddHandler
みぃつけた(w
けど待てよ..ここを書き換えちゃうと、Apache全体に適用されちゃうよな。それはまずいな。
ってことで、.htaccessを利用することに決定。既にベーシック認証の為に設置してるから追記するだけでいけるはず。
# exit
$ cd ~/public_html
$ vi .htaccess
AddHandler cgi-script .cgi.sh
気を取り直して、もう一度テストをやってみた
http://www.sasapurin.com/~wol/wol.html
ボタンをクリック!
カチン、ピコッという音と共に電源ファンの音が鳴って、LEDが点灯した!
やったぜ成功!!やるじゃん俺(w
という訳でWebブラウザでWOLに成功したのでありました。
実は、メールを送ってそれをトリガーにしてシェルを実行させるって方法も考えたんだけどね。それはまたの機会にしようかな。とりあえず上手く出来てよかった。
冗長しますが、上記のURLは架空のもので存在しません。わざわざ秘密の入り口をネットで公開するほど間抜けではないっす(w
投稿者 sasapurin : 18:41 | コメント (0) | トラックバック
2005年11月21日
自宅サーバーのデメリット
自宅でLinuxサーバを動かすとなると、どうしても見過ごすことの出来ないデメリットもあります。私はそれ以上のメリットがあると思っているので、自宅サーバーを動かしていますが。
まず、電気代がかかることです。もしWebサーバとしてインターネットに公開したとしたら、24時間動かしっぱなしにしたくなるでしょう。誰が何時アクセスして来るか分かりませんからね。
次に問題となるのは、特にワンルームの家に住んでいる人でしょう。パソコンは熱を発する機械なので、冷却の為にファンが回転しています。ハードディスクの音も気になるかも知れません(現在は流体軸受けのベアリングを使っているモノが殆どなので音はほとんど聞こえませんが)。特にベッドの横に設置するしか無いなんて場合は、夜静かになるとパソコンの音が耳障りに聞こえてしまいます。これは結構厄介な問題です。
次はちょっと技術的&金銭的な問題です。サーバを稼働させていると、いつの間にか重要な情報がサーバに蓄積されていきます。このデータはお金で買うことが出来ません。もし、ハードディスクが故障してしまい、アクセス不能になったら、もうデータを取り返す事は無理かも知れません。その為には日頃からバックアップを取る、もしくはRAIDファイルシステム等でデータの保存を冗長化しておく事も重要です。前者は手間がかかり後者はお金がかかります。
それともう一つ注意しておきたいのは、停電対策です。LinuxはUNIXとよく似た仕組みなので、突然電源が切れてしまうと、ファイルシステムが壊れてしまう可能性があります。出来ればUPSを使って停電時にも数分間は稼働させられる様にした方が良いでしょう。シャットダウンコントロール機能があれば、バッテリーで動いている間にシステムを自動的に停止することが出来ます。
自宅サーバのデメリットばかり書くと、なんだか面倒だなと感じるかも知れませんが、それ以上にメリットが有ると私は思います。家庭環境やお金の問題(中古を活用しましょう)もありますが、色々と工夫する事で解決出来るかも知れません。デメリットを理解した上で是非導入してみましょう!
投稿者 sasapurin : 23:06 | コメント (0) | トラックバック
自宅サーバーのメリット
自宅でLinuxを使ってサーバーを稼働させた時のメリットを幾つかご紹介します。もちろんデメリットもありますが、それは別のエントリーで。自宅サーバと言えば、一番需要があるのは、Webサーバではないでしょうか?自分のホームページをLinuxサーバでインターネットに公開する訳です。多くの場合Apache(httpd) というプログラムを使って実現します。自宅のPC-UNIXサーバでホームページを公開する事のメリットはどんなことが考えられるでしょう?
一つは、プロバイダのホームページスペースの様に、数十MBなどという小さなディスク容量の制限が有りません。もちろん自宅サーバで使用するハードウェア によって違いますが、現在普通に入手出来るハードディスクを使用すれば、数GBもしくは数十GBという膨大な容量のホームページスペースを好きに使用出来 ます。動画ファイルなんかも置き放題です。 また、ネットワークの面でも有利なのも見逃せません。プロバイダのホームページスペースをレンタルした場合、FTPソフトを使ってホームページの構成ファ イルを転送しなくてはなりません。一度に沢山のページを更新したり、追加した場合は、この転送時間も長くかかってしまいます。
また、掲示板等を設置してい る場合は、バックアップの為にプロバイダのサーバからFTPでダウンロードして万一の場合に備えなくてはなりません。これもやはりネットワークトラフィッ クが問題となります。 一方、自宅のLAN内にWebサーバを置いた場合は、LAN内部でファイル転送を行う為、非常に高速なFTP転送が行えます。半分以下、もしくは十分の一 程度の時間で転送が終わるかも知れません。なぜそんなに違いが出るのでしょうか?それはインターネットの速度と、プロバイダのサーバにアクセスしている ユーザーの数の違いでしょう。自宅サーバならネットワークもサーバーも独り占め出来るから快適なのです。この環境に慣れてしまうと、プロバイダのサーバに アクセスするのが煩わしく思えてきます。
もう一つ便利なことが考えられますね。そうですメールサーバです。オリジナルのメールサーバを持つ事により、オリジナルのメールアドレスを幾つでも作る事 が出来ます。お金はかかりますが、マイドメインを取得すれば、スマートなメールアドレスを使えるのです。これはWebサーバよりももっと身近なメリットで はないでしょうか。家族一人一人にメールアドレスを作ったり、会社に教えるメールアドレス、友達に教えるメールアドレス、ネットの懸賞などに応募する捨て メールなど、作りたい放題です。
それ以外にもアイディア次第で色々な事が考えられます。無償のグループウェアを使って家族で予定表を共有したり、複数のパソコンを使っている人は、スケ ジューラのデータを共有させたり。Blogシステムを自宅サーバーで動かすのも良いアイディアと思います。しかし、用途は色々考えられとても書ききれないのでこれくらいにしましょう。 自宅サーバについて、少しは興味が出てきましたか?もし興味が出てきたなら、それはしめたものです。なるだけ早い内に始めた方が良いでしょう。
PC-UNIXの進化は非常に早いので、その内始めようと思っていても、あっという間にどんどん高度化して難しくなってしまう可能性があります。それに何よりも、 Linuxがまだ一般家庭に普及していない時点で、Linuxの知識を身につけていればちょっと自慢になるんではないでしょうか? ここに記述したことはあくまでも一例に過ぎません。色々なとらえ方があると思うので、ご自分でどういう事をしたいのか、一度考えてみると良いでしょう。無 料で安定性の高いOSを使ってサーバーを稼働させることが出来る。これが何よりも魅力でしょう!