2010年12月19日日曜日

ddo.jp 自動更新スクリプト

せっかく光を引いたので、EeePC 4GにUbuntu Linux Serverをインストールして、Webサーバーをたてました。JCOMとは違って、光はモデムの電源を入れなおすとIPアドレスが変わります。ひょっとしたらDHCPの更新でもIPアドレスが変わることもあるのかも。
逆に言うと、JCOM は固定IPかよってくらいIPアドレスがまったく変わらない仕様のようです。
とりあえず、IPアドレスがわからなくなると外から接続できなくなるので、無料DDNS の ddo.jp を使ってみることにしました。

http://ddo.jp/

ブラウザで上記URLにアクセスして登録した後、IPアドレスが変更になったときにIPアドレスを自動で再登録するようにスクリプトを組みました。
元々は、ここにあったVine用のものを使ってみたものの、Ubuntu(?)だからかうまく動かなかったので、スクリプトをちょっと弄りました。


#!/usr/bin/perl
#
$CRT_IPF = '/tmp/CRT_IP.dat';
$NEW_IPF = '/tmp/NEW_IP.dat';
$LOG = '/tmp/ddns.log';

open(INPUT,$CRT_IPF);
$CRT_IP=<INPUT>;
close(INPUT);

system("/usr/bin/wget -q -O $NEW_IPF http://info.ddo.jp/remote_addr.php");
open(INPUT,$NEW_IPF);
@xx = <INPUT>;
$c = $xx[1];
$stp = index($c,"REMOTE_ADDR:")+12;
$edp = length($c);

print "c = $c\n";
print "stp = $stp, edp = $edp\n";

$NEW_IP = substr($c,$stp,($edp-$stp));
close(INPUT);

print "New IP: $NEW_IP\n";
print "Current IP: $CRT_IP\n";

if ($NEW_IP ne "" and $CRT_IP ne $NEW_IP) {
open (OUTPUT ,">$CRT_IPF");
print OUTPUT $NEW_IP;
close OUTPUT;

print "IP Address update: $CRT_IP to $NEW_IP\n";
system("/usr/bin/wget -q -O - 'http://free.ddo.jp/dnsupdate.php?dn=[登録名].ddo.jp&pw=[パスワード]'");

$now_string = localtime;
open (OUTPUT ,">>$LOG");
print OUTPUT "$now_string DDNS IP Address Updated. $CRT_IP to $NEW_IP\n";
close OUTPUT;
}


更に、これを cron で15分毎に自動で動くように設定します。
/etc/cron.d/ddns というファイルを作って、以下の2行を記入します。


# DDNS
*/15 * * * * hogehoge /home/hogehoge/ddns/ipcheck.pl


IPアドレスが変わっても15分後には新しいIPアドレスでドメインを辿れるようになります。

2010年12月18日土曜日

コンソール用IRCクライアント irssi

最近、仕事でsshとかをよく使っているので、ターミナル上でIRCできないかなとコンソール対応IRCクライアントを探してました。
コンソール用のIRCクライアントは数はあれど、日本語が表示できないとかかゆい所に手が届かないものが多かったのですが、他の方のブログ記事で irssi というソフトを見つけました。

http://d.hatena.ne.jp/themorthem/20080702/1214998634

記事はDebianだけど、Ubuntuでも導入方法は同じ。紹介記事のプラグインで日本語表示までできました。
そんでもって、日本語でログも取れたらなぁと設定してみたものの、文字化け状態で保存されてしまってうまくいかない。仕方がないので、手抜きのロギングプラグインを作った。Perlで機能を拡張できるのもirssiの強みなのかもしれない。

use strict;
use Irssi;
use Encode;

use     POSIX qw/strftime/ ;

use vars qw($VERSION %IRSSI);

$VERSION = "0.1";
%IRSSI = (
       authors         => 'u1f',
       contact         => 'u1f@outlook.jp',
       name            => 'logjpn.pl',
       description     => '日本語ロギングプラグイン',
       license         => 'GPL',
       url             => 'http://u1f.blogspot.com',
       changed         => '2010-11-29',
);

my $local_charset = 'UTF-8';
my $remote_charset = 'ISO-2022-JP';
my $logpath = "/home/hogehoge/.irssi/irclogs/";
my $ownnick = "hogehoge";

Irssi::print("*****\n* $IRSSI{name} $VERSION loaded.");

sub     handle_public {
       my ($srv, $msg, $nick, $addr, $tgt) = @_;
       write_log($nick, $msg, $tgt);
}

sub     handle_private {
       my ($srv, $msg, $nick, $addr) = @_;
       write_log($nick, $msg);
}

sub own_public {
       my ($server, $msg, $tgt) = @_;
       write_log($ownnick, $msg, $tgt);
}

sub own_private{
       my ($server, $msg, $tgt, $orgtgt) = @_;
       write_log($ownnick, $msg);
}

sub     write_log {
       my      ($nick, $msg, $tgt) = @_ ;
       $tgt ||= "->" ;
       Encode::from_to($msg, $remote_charset, $local_charset );

       my      $day = strftime("%y-%m-%d", localtime()) ;
       my      $ts = strftime("%H:%M", localtime()) ;
       my      $lfile = $logpath . $tgt . "." . $day . ".log";

       if (open(OUT, ">>$lfile")) {
               print OUT "$ts <$nick> $msg\n" ;
               close(OUT);
       } else {
               Irssi::active_win()->print("can't open file `$lfile': $! \n") ;
       }
}

Irssi::signal_add_first("message own_public", "own_public") ;
Irssi::signal_add_first("message own_private", "own_private") ;
Irssi::signal_add_first("message public", "handle_public") ;
Irssi::signal_add_first("message private", "handle_private") ;

2010年12月11日土曜日

JCOM 24M→12M へ

実家を出て早3ヶ月。両親もネットを使うので解約するわけには行かないが、Web見る程度で遅くしてもよさそうなので、24Mコースから少し安い12Mコースに移行しました。金払ってるの俺だし。速度チェックしたので結果を貼り付けてみる。
以前のJCOM速度テストはこちら

○24Mbps(上り2M下り24M)

------ BNRスピードテスト (ダウンロード速度) ------
測定サイト: http://www.musen-lan.com/speed/ Ver3.5001
測定日時: 2010/11/27 16:24:23
回線/ISP/地域:
--------------------------------------------------
1.NTTPC(WebARENA)1: 10273.458kbps(10.273Mbps) 1283.39kB/sec
2.NTTPC(WebARENA)2: 13182.062kbps(13.182Mbps) 1647.22kB/sec
推定転送速度: 13182.062kbps(13.182Mbps) 1647.22kB/sec

上り(アップロード)速度テスト結果
データ転送速度 1.55Mbps (194.23kB/sec)
アップロードデータ容量 600kB
アップロードに要した時間 3.089秒
測定日時 2010年11月27日(土) 16時25分
利用ブラウザ: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7

○12Mbps(上り2M下り12M)

------ BNRスピードテスト (ダウンロード速度) ------
測定サイト: http://www.musen-lan.com/speed/ Ver3.5001
測定日時: 2010/12/11 16:16:15
回線/ISP/地域:
--------------------------------------------------
1.NTTPC(WebARENA)1: 9029.749kbps(9.029Mbps) 1128.36kB/sec
2.NTTPC(WebARENA)2: 7707.034kbps(7.707Mbps) 963.22kB/sec
推定転送速度: 9029.749kbps(9.029Mbps) 1128.36kB/sec

上り(アップロード)速度テスト結果
データ転送速度 1.82Mbps (227.61kB/sec)
アップロードデータ容量 600kB
アップロードに要した時間 2.636秒
測定日時 2010年12月11日(土) 16時16分
利用ブラウザ: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7

12Mコースにしては結構いい線行ってるような気がする。