• Emacs と Perl を使って,XML-RPC 経由で Movable Type のエントリを編集するツールを配布しています.良かったら持っていってください.( 2004/10/24 update) mapae logo
  • Movable Type で footnote*1 を生成する plugin を配布しています.良かったら持っていってください.( 2004/03/04 update )
  • その他の配布物等

*1: 脚注.よ〜するに,こ〜ゆ〜やつです.

expect

| コメント(0) | トラックバック(0)

expect の存在を初めて知りました.これは便利ですね.screen に初めて出会ったときと同じくらい感動しました.

少し前の,@Nifty セカンドメールのトラブルの時に知っていれば,どれだけ楽だったことか.サーバ側の動作が問題であることを確認したかったので,メーラ等は使わずに telnet で確認していたのですが,telnet で接続,チャレンジ文字列を元に md5sum でレスポンス文字列を計算,ログイン,を何度も繰り返していました.

今となっては既に解決されているので問題ないのですが,後学のためにログインスクリプトを書いてみることにしました....が,チャレンジ文字列からレスポンス文字列得る方法が分からない.そもそも,Tcl が全く分からないわけでして.

というわけで,Perl の Expect.pm モジュールを使ってみることにしました.

#!/usr/bin/perl

use Getopt::Std;
use Expect;
use Digest::MD5 qw(md5_hex);

my $host = '';
my $user = '';
my $pass = '';
my $timeout = 20;

my %opts;
getopt('hup',\%opts);

$host = $opts{'h'} if ( $opts{'h'} );
$user = $opts{'u'} if ( $opts{'u'} );
$pass = $opts{'p'} if ( $opts{'p'} );

my $e = new Expect;
$e->spawn('telnet',$host,'pop3');
$e->expect( $timeout, [qr/<.*>/] );

my $challenge = $e->match;
my $response = md5_hex("$challenge$pass");
$e->send("apop $user $response\n");
$e->expect( $timeout, "+OK" );
$e->interact;
$e->soft_close();

...同じことを Tcl な expect でやろうとしたら,どうなるんでしょう.

トラックバック(0)

トラックバックURL: http://d.nym.jp/mt/trackback/1746

コメントする

最近のコメント

アーカイブ

Author

nym <n...@nym.jp>
Powered by Movable Type 5.12