■ Rubyを使った楽々Dial-up Router制御法 大抵のダイヤルアップルーターはウェブページを利用して制御できるようになっていますが、いちいちページを開くのは面倒です(というか、うちのSOHO-128 SL11なんで例のごとくNet+と相性が悪い)。まじめに制御プログラムを書くのも悪くはないのですが、スクリプト言語を使ってちょちょいと処理してしまうのも手です。そんなわけでPerlを・・・と言いたいところなのですが、Be版のPerlは未だにsocketが使えません。が我々には日本発のオブジェクト指向スクリプト言語Rubyがあるではないですか。ということで、Rubyを使った簡単なプログラムでダイヤルアップルーターを制御してみましょう。
◆制御方法を調べる本当はこれを調べるのが大変なのかもしれませんが・・・。とにかく接続、切断に必要なリクエストを調査します。間にプロキシサーバーなどを挟んで、ログを取るとわかります。ちなみにSOHO-128SL11の場合は次のようになっています。
[接続]
POST /config-quick.cgi HTTP/1.0 Content-Length: 10 connect+0=[切断]
POST /config-quick.cgi HTTP/1.0 Content-Length: 15 disconnect+all=
◆Rubyスクリプトを書くいきなりですが、スクリプトを書きます。調べた接続、切断のための送信データをファイルとして保存します。ここでは/home/config/etc/connect、/home/config/etc/disconnectとして保存したと仮定します。
[スクリプト]
#!/boot/home/config/bin/ruby require "socket" server="169.254.1.1"; port="80"; confpath = "/boot/config/etc/"; mode = ARGV.shift; if (mode == "disconnect") fname = confpath + "connect"; else fname = confpath + "disconnect"; end file = open(fname, "r"); sock = TCPsocket.open(server, port); while line = file.gets sock.write line; end sock.close; file.close;これだけ。簡単(笑)。これを/boot/home/config/bin/duprtr.rbなどとして、Terminalから
$ duprtr.rb connect とか、
$ duprtr.rb disconnect とかすれば接続・切断ができます。あ、当然スクリプト中のserverは ルーターに割り当てられているアドレスにしてください。普通の人だと192.168.0.1とかが多いでしょうか。 私の場合、ルーターのアドレスを定義ファイルの最初の行にいれて、スクリプトで処理をして接続先を決めていますが まぁ、普通はそんなことする必要もないでしょう。いちいちTerminalから打つのが面倒なら、
#!/bin/sh duprtr.rb connectってな感じのファイルをデスクトップ上に「インターネットに接続」なんて名前で作っといてやれば、 これをダブルクリックするだけでOK。ね、簡単。スクリプト言語バンザイ。