0SIM の使用量をメールで通知する Perl スクリプト/CGI

Posted by
ぴろり
Posted at
2016/07/16 22:19
Trackbacks
関連記事 (0)
Post Comment
コメントできます
Category
電算室 カテゴリ
カバーイメージ

 ガラケーからスマートホンに乗り換えて暫く経ちますが、最終的にまたガラケーに戻ることにしました。ガラケーに戻るものの、やはりスマホの便利さも捨てがたく、そこで、スマホのデータ通信用回線に So-net モバイルサービスが運営する 0 SIM を契約しました。0 SIM のスゴイところは、毎月 500MB まで月額無料で使えるという点で、ほとんど自宅の WiFi 圏内をウロウロしている身としては 500MB もあれば十分なのです*1
 ただ、ちょっと油断すると足が出てしまうので*2、月額無料を達成するためには、サービスの管理画面にログインして現在の通信量をこまめにチェックしなければなりません。しかし、わざわざブラウザで管理画面を開いて、アカウントとパスワードを入力して目視するのも面倒くさい。
 …というわけで、0 SIM の管理画面をスクレイピングして、メール送信してくれる Perl スクリプトを書いてみました。自宅のサーバに仕込んで定期実行されるようにしておき、毎朝、ガラケーに使用量のサマリが届くようにしています。

この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  

概要

 0 SIM の通信量が 400MB を超えると、So-net から通知メールが届きます。しかしそれ以前に、今日現在の使用状況を細かく把握するには、スマホの通信量モニタを使う方法でも概算できますが、実際の通信量を見るには、サービスの管理画面にログインして確認する以外に方法がありません。


Fig.1 ログインして


Fig.2 [ご利用状況確認]ボタンを押して


Fig.3 ようやく確認できる

 ちなみに、通信量を把握するために、この管理画面を 0 SIM の回線を使って閲覧なんてしてたら笑えませんヨ*3。そもそも、ブラウザを開いて、管理画面にログインして、[ご利用状況確認]ボタンを押して…という手間が面倒くさいです。そこで、これらの操作を自動的に行って、利用状況の表から必要な数値を抜き出し、メールしてくれる Perl スクリプトを書いてみました。実行すると、設定したメールアドレス宛に次のようなメールが届きます。

$VAR1 = {
  'Yesterday' => '0',
  'ThisMonth' => 171,
  'Yesterday2' => '-',
  'Today' => '-',
  'PaceRatio' => '66.3'
};

フィールドの説明

ThisMonth
管理画面の [今月のデータ使用量(速報値)] に表示されている通信量(MB)
Today
管理画面の [本日のデータ使用量(速報値)] に表示されている通信量(MB)
Yesterday
管理画面の [昨日のデータ使用量] に表示されている通信量(MB)
Yesterday2
管理画面の [一昨日のデータ使用量] に表示されている通信量(MB)
PaceRatio
通信量の消化ペースで、月末に 500MB を使い切るペースを 100% として計算します。仮に 15 日の時点で 250MB 使っていれば 100% になりますし、300MB 使っていれば 120%=使い過ぎとなります。100% を下回るように使い続ければ、月額無料でゴールできるハズ。
RestUsable
月額無料の範囲で使用可能な残り通信量(MB)
LimitExceed
月額無料の範囲を超えた通信量(MB)
Fee
月額無料の範囲を超えた通信料金(円)

ソースコード

準備

 ソースコード内の %config のうち、少なくとも UserNamePassWordTo を設定してください。

### 動作設定
my %config = (
    # 会員用ウェブサイトのログイン情報
    UserName => '07012345678',
    PassWord => 'password',
    # 通知メールの設定
    Mail => {
        To =>       'mail@example.com',
        Subject =>  '0SIM 通信量',
    },

    # 会員用ウェブサイトから現在値を取得せず、取得済みのダンプを使用する場合に 1
    UseDump =>  0,
    # 会員用ウェブサイトの HTML をダンプするファイル名
    DumpFile => '0sim_dump.html',
);
UserName
管理画面にログインする際のログイン ID です。
PassWord
管理画面にログインする際のパスワードです。
To
使用量を通知するメールの宛先です。
Subject
使用量を通知するメールの題名です。
UseDump
動作確認や実験などの目的で、管理画面にログインしてデータを取得せず、取得済みのダンプ ファイルを入力データとして利用するためのスイッチです。よく判らないまま変更しないでください。
DumpFile
管理画面にログインした後の使用状況確認画面の HTML を書き出すファイル名です。コメントアウトするとダンプを生成しません。特に事情が無ければこのままで支障ありません。

実行方法

コマンドラインから実行

 Linux サーバや Windows+ActivePerl などの環境で実行できます。cron などで定期実行しておくと便利です。

■ 使用量を取得して画面に表示する
perl 0sim.cgi

■ 使用量を取得して画面に表示し、メール通知する
perl 0sim.cgi --mail

Perl CGI として実行

 Perl CGI としても動作させられるので、自前の Web サーバなどに設置して使用量の確認とメール通知を行えます。例えば、毎朝定時にメール送信されるようにはしてあるものの、今直近での使用量を確認したい場合などです。外部に公開された Web サーバなど誰にでも見られてしまうとマズイので、Basic 認証などで必ず隠してください。

■ 使用量を取得して画面に表示する
http://www.example.com/secret/0sim/0sim.cgi

■ 使用量を取得して画面に表示し、メール通知する
http://www.example.com/secret/0sim/0sim.cgi?mail

その他

  • ログインやフォーム送信、画面遷移の処理に、WWW::Mechanize を利用しています。必要に応じてインストールしてください。
  • 通知メールの送信に、MIME::Lite を利用しています。必要に応じてインストールしてください。
この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  

  1. *1 ヒキコモリ言うなー!
  2. *2 500MB を超過したところで 100円/100MB の追加料金設定のため致命的ということはありません
  3. *3 ミイラ盗りがミイラになる


関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。