2012年04月04日

メールでPCサーバをリモート管理

メール送信・受信を使って遠隔地にあるPCをコントロールしたらSSHやVPNを組み合わせてリモート管理するよりもずっと簡単で面白いんじゃないだろうか・・・という事でGmal、Java、Linux系OSで動くエンジンを作ってみました。

05

仕組みですが、まず操作したいPC、携帯から専用のgmailアドレスに制御メールを送信します。

mailadmin

すると遠隔にいる管理対象PC側でメールを受信し、本文に設定されているコマンドを順次実行し、結果をメールで返信します。
既に誰かが作っていそうですが、少し変わった機能もつけたので読んでいってくださいね。

インストール


まずは次のURLからzipファイルをダウンロードしてください。

 mailadmin-1.0.zipダウンロード

どこか適当な場所で解凍して、

$ unzip mailadmin-1.0.zip
   Archive:  mailadmin-1.0.zip
   creating: mailadmin/
   creating: mailadmin/jars/
   inflating: mailadmin/jars/commons-email-1.2.jar  
   inflating: mailadmin/jars/MailAdmin-1.0.jar  
   inflating: mailadmin/jars/log4j-1.2.16.jar  
   inflating: mailadmin/jars/mail.jar  
   inflating: mailadmin/jars/activation.jar  
   creating: mailadmin/bin/
   inflating: mailadmin/bin/mail.sh   
  extracting: mailadmin/bin/.pid      
   creating: mailadmin/config/
   inflating: mailadmin/config/mail.log4j.xml  
   inflating: mailadmin/config/config.txt  
   creating: mailadmin/logs/
  extracting: mailadmin/logs/stderr.txt  
   inflating: mailadmin/logs/mailadmin.log

これでおしまい。

あとはJava(開発は本家Oracle Javaで検証)環境が必要なので無い人は、java.comから自己解凍ファイルをダウンロードして下さい。

32

これを次のコマンドで解凍して、

$ sh jre-6u31-linux-i586.bin
  Creating jre1.6.0_31/lib/deploy.jar
  ・・・・
  Done.

作成されたフォルダ(この例ではjre1.6.0_31)を先程解凍して出来たmailadminフォルダにjreという名前で移動して下さい。

$ mv jre1.6.0_31 mailadmin/jre


動作設定と起動


まずは通信用のメールアドレスが必要です。専用のgmailアカウントを用意して下さい。

29


ここからはadmin@gmail.comを新たに用意したアドレス、your@gmail.comを普段使っているアドレスとして説明します。

続いて動作設定。動作設定はmailadmin/config/config.txtで行います。
このファイルをエディタで開くと、次のような設定パラメータがあります。

 pop-host = pop.gmail.com
 pop-port = 995
 smtp-host = smtp.gmail.com
 smtp-port = 587
 user = admin@gmail.com #用意したメールアドレス。
 password = password #用意したメールアドレスのパスワード。
 allow-from = your@gmail.com #命令を受付ける送信元アドレス。複数ある場合","で区切ります。
 fetchInterval = 180000 #受信する間隔(ミリ秒/初期値は3分)。短くするとgoogleからで接続拒否されます。
 tls = true #認証にTLSを使うか否か。

基本、変更するのはuser、password、allow-fromだけで大丈夫です。

さあ、次のコマンドで起動してみてください。

$ /path/to/mailadmin/bin/mail.sh start 
※停止はstop。

状態はログ・ファイルで確認できます。

$ tail /path/to/mailadmin/logs/mailadmin.log 
  2012-04-04 00:06:44  INFO MailAdmin Starting mail admin...
  2012-04-04 00:06:44 DEBUG MailControler 1:メールの受信を開始します。
  2012-04-04 00:06:46 DEBUG MailControler 2:メールの受信が終了しました。
  2012-04-04 00:06:46 DEBUG MailControler 3:次回まで待機中 (180000 sec)
 
1,2、3の状態を繰り替えしていれば準備完了です。


使ってみる1(サーバの状態を知りたい)


遠隔にあるPC(この例ではadmin@gmail.com)に対して次のようなメールを送信します。

55

すると受信側ではメール本文にあるuptime、df -hコマンドが実行されます。

途中に空文字の行があると、そこで命令は終わったと解釈し、以降の処理は行いません。
また、特殊な命令として”a:パス”を指定できます。a:に続いてファイルへのパスを指定すると、返信するメールにファイルを添付してくれます。

しばらくすると遠隔にあるPCからこんな返信が届きます。

17

うまくいきましたね。

注意点として対話的なコマンド(例えば、sudoを付けてパスワードを聞かれるようなコマンド)は指定できません。
sudoが必要なコマンドを使い場合、mail.sh自体を$ sudo mail.sh startで起動して下さい。


使ってみる2(大事なデータを自宅のPCに忘れた)


仕事で使う大事なデータを自宅のPCに忘れてしまった。。
そんな時はDropboxがインストールされていれば、次のようなメールでDropbox経由で手元のPCにコピーできますね。

12


41


使ってみる3(自宅の状況を写真で確認したい)


遠隔地にいるおじいちゃん、おばあちゃんは元気だろうか・・・そんな時もパソコンにカメラが付いていれば大丈夫です。
Ubuntuでコマンドを使って写真を撮影する場合、streamerというパッケージを使います。

まずはソフトウェア・センター又はコマンドでstreamerをインストールしましょう。

$ sudo apt-get install streamer

あとはカメラのデバイス・ファイルを確認しておきます。通常は/dev/videlo0です。心配な人は次のコマンドで確認しましょう。

$ ls /dev/video*
  /dev/video0
 
streamerの使い方は次の通りです。

$ stremer -c /dev/video0 -b 16 -s 640x480 -o /path/to/file.jpeg

こうすると/dev/video0で認識しているカメラを使って、640x480のサイズで撮影し、/path/to/file.jpegに画像を出力します(-bはバッファサイズ。特に変更する必要なし)。

じゃあ早速メールで。

08

a:で出力したファイルを添付するように命令しています。

すると撮影した写真がメールで送られてきます。

30

もちろんgmailを使っていれば携帯からでもOK。
(gmailでしか動作確認してないんです)


52


うーん、少しは便利かも。

ソースコードは欲しいという人がいたらいつでも公開しますね。


LOGICOOL ウェブカム HD画質 120万画素 C270
ロジクール (2010-08-20)
売り上げランキング: 36


プリンストンテクノロジー USB PCリモート デジ操゛ PSC-RC
プリンストンテクノロジー (2012-03-23)
売り上げランキング: 3519



Posted by netbuffalo at 20:04│Comments(0)TrackBack(0)Java | Linux


この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/netbuffalo/3932942

コメントする

名前
URL
 
  絵文字