サーバいじくり雑記

2009年11月7日

opensshのログがURIエンコードされて困る

Filed under: ソフト — bompopo @ 12:00 午前

sftpの転送ログをとっているのだが、マルチバイトをURIエンコードして出力してくれるのでちょっと困る。
ここを参考にUTF-8用のスクリプトを書く。
こんな感じになりました。

#!/usr/local/bin/perl
use warnings;
use strict;
use utf8;
use Encode;
use URI::Escape;
my $filename = shift;
my $outfile = $filename . '.utf8';
open my $IN, '<',$filename;
open my $OUT, '>:encoding(utf8)', $outfile;
for my $line (<$IN>){
        while ($line =~s/(\\\d{3})+/OCTAL/){
                my $string = $&;
                my @temp= split(/\\/,$string);
                for my $i (@temp){
                        $i = sprintf("%X",oct($i));
                }
                shift @temp;
                $string = '%'.join('%',@temp);
                $string = decode('utf8',uri_unescape($string));
                $line =~ s/OCTAL/$string/;
        }
        print $OUT $line;
}

これをcronで毎日動かすといいかもしれない。

コメントする »

まだコメントはありません。

RSS feed for comments on this post. TrackBack URI

コメントを残す