Last-Modified: Saturday, 16 October 2004 20:46:18 +0900 (JST)

Saturday, 16 October of 2004

ここ数日(?)のこと

・CBUG合宿
11初旬に CBUG合宿が計画されているので、それに参加を 表明しておく。今回も車で行く予定。(電車だと、それなりに 空いていれば 移動中は楽だけど... 時間の制約がちょっと きつく、待ち合わせで時間が掛かったり、あまり大きな 荷物は持てないし(そんな大きな荷物はないはずだが...) 混雑していると、嫌なので...)


・電車に乗っているときの地震
6日の帰りの電車に乗っているときに大きな地震があった らしい。どうやら 震度4だったらしい... 電車が走っているときに揺れたらしく、地震があったことには 気がつかなかった。電車が、駅のホームに着いてドアを開けた ときには 乗降する人が少ない割には 車体がゆれているなぁ... とは思ったけど...
その後 数分駅に停車したのち運転を再開したが、 速度を落としてゆっくり運転している。
新宿駅には 相当の遅れで到着。ホームに着いたら、(乗ろうと 思っていた)終電の前の電車が定刻通りに発車していくところ だった。という訳で小田急線は 地震の影響で遅れてはいない。 JR線が遅れたため、新宿では終電になってしまう。
終電の電車は既にホームで発車待ちの状態で停車しているので、 それに乗り込む。先行した電車が定刻で発車したので、この 電車も定刻で発車できるはずだが、JRが遅延しているので、 連絡のために 8分遅延して発車。さらに途中駅でも他社線の 連絡待ちでさらに数分遅れ、最終電車だけで 15分程度 遅れたはず。乗れるはずだったに 乗り遅れた急行電車からの 待ち合わせ分を含めると 33分以上遅れたことになる...

・台風22号
9日頃に台風が直撃。昼過ぎから夕方に掛けて 強い雨と 風が... かなり激しい雨が降ったようです。
しかし 夜になる頃には台風は過ぎて、風雨もかなり落ち着き、 帰路につくころには、全く影響なし... という感じ...
しかし、小田急のWebの運行案内では 小田原線の運行は 台風の影響で、大幅な遅れが生じている と案内されていたけど 実際には 1〜2分程度遅れただけで、大幅な遅れではなかった。 遅れていると思って 遅めに行ったら、乗り遅れるところだった...

・四谷三丁目
15日に ミーティングがあったので、出席する。

・車内トラブル?
15日の帰りのこと。改札に到着したら、既に電車が到着していて、 降車した人が既に改札を通っていた。 通常ならもう間に合わない ので、あきらめて、ゆっくり改札を通ってホームに出る。 しかし電車はまだ発車していない...
どうやら先行した電車の中で車内トラブルがあって、次の 駅で停車中なので、発車できないでいたらしい。
その後、遅れて発車。次の駅ではトラブルの原因となった、 当事者がホームで駅員に制止されながら口論中... だった
Perl script

・連携テスト
複数の PC(FreeBSD/Linuxなど...) で関連するプログラムの 動作テストを可能な限り自動化するために... とりかかりの script を書くことにする。
とりあえず、ssh で接続できるようにするために Net::SSH::Perl モジュールを手元で 入れてみる。
とりあえず、ssh で通信できるようになったものの、 関連するモジュールの数が多すぎて、動作するようにするのは、 面倒... (^^;
ということで Net::Telnet を入れて試してみる。 これは、 IO::Socket::INET のラッパーで、簡単だけど コマンドの 実行が終わらないと 戻ってこないため、相手側の 出力を 監視する用途には、不向きかも...
というわけで、Net::Telnet でいいところは、それを使い、 基本的には IO::Socket::INET を使って書いてみることに しようと思う。まずは 環境チェック用...
#!/usr/bin/perl
use strict;
use English;
use IO::Socket::INET;
use Net::Telnet;

sub remote_exec {
    my ($telnet, $cmd) = @_;
    my @result;
    print "\n=================== remote =================\n";
    print "$cmd\n";
    @result = $telnet->cmd($cmd)};
    print $_ foreach(@result);
    \@result;
}

sub local_exec {
    my ($telnet, $cmd) = @_;
    my @result;
    print "\n=================== local =================\n";
    print "$cmd\n";
    @result = `$cmd`;
    print $_ foreach(@result);
    \@result;
}

sub ping_check {
    my $result = shift;
    foreach(@$result) {
        return $1 if (/transmitted, (\d) packets received, /);
    }
}

# 相手に pingを送ってみる
my $result = local_exec '', 'ping -c 1 -t 5 hogehoge....';
ping_check($result) or die "No echo reply message!\n";

# ping が届くので telnetする
my $telnet = new Net::Telnet(Timeout => 10, Prompt => '/^\w+\@\w+> /',);
$telnet->open('hogeoge....');
$telnet->login('username', 'password');

# hpge1 のコマンドの存在をチェック
$result = remote_exec $tenlnet, 'ls -1 /any/path/to/command/';
die "Not found command on remote host\n" unless ($result);

$telnet->close;

print "Success\n";
		
※このスプリクトは全く実行していない。イメージだけ...

こんな感じで とりあえずはじめてみる。実際には、チェック先 のホストやコマンドのリストなどは 別途 設定ファイルに書ける ようになっている。
お出かけ

・エルミタージュ展
江戸東京博物館で開催されている エルミタージュ美術館展が 明日で最終日になるので行ってみる。 (博物館なのだが、美術館展が実施されている)
大変な混雑でした。展示会場に入場した直後あたりから、 入場制限が実施され、約2時間後に出てきたら、入場まで、 40分待ちの状態になっていました。