[Perl] Apache 转 IIS 的 Perl

Sep 1st, 2010

转载本站文章请注明,转载自:扶凯[http://www.php-oa.com]

本文链接: http://www.php-oa.com/2010/09/01/squid-to-iis-convert-perl.html

小软件,给 apache 转成 IIS 的格式的 Perl

 

#!/usr/bin/perl
use strict;
use POSIX;
my $PerlParsingFormat = '^([^ ]+)\s+([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+) (\w+) ([^ ]+) (.+?) ([^ ]+) ([^ ]+) "([^ ]+)" "(.*?)" ([^ ]+)';

    $PerlParsingFormat = qr/$PerlParsingFormat/;

while ( my $line = <> ) {
    chomp $line;
    $line =~ s/\r$//;
    my @field = map( /$PerlParsingFormat/, $line );

    my ($date, $Response_time, $Client_source_IP, $HTTP_status_code, $Reply_size, $Request_method, $Request_URL, $User_name, $Client_FQDN, $MIME, $Referer, $User_Agent, $Cookie ) = @field;

    $date = strftime("%Y-%m-%d %H:%M:%S", localtime($date));
    my $c_ip        = $Client_source_IP || "-";
    my $cs_username = $User_name || '-';
    my $cs_method   = $Request_method;
    my $sc_bytes    = $Reply_size;
    my $cs_User_Agent = $User_Agent;
    my $cs_Referer  = $Referer;
    my $cs_Cookie   = $Cookie;
    my $sc_status   = $HTTP_status_code;
    $sc_status      =~ s/.*\///;
    my $s_ip        = $Client_FQDN || '-';
    $s_ip           =~ s/.*\///;

    # 对 UserAgent 中的空格换成+
    $cs_User_Agent  =~ s/\ /\+/g;

    # 对 url 进行处理
    my $cs_uri_stem = $Request_URL;
    my $cs_uri_query= '-';
    if ( $Request_URL ne "-" ){
        if ( $Request_URL =~ /(.*)\?(.*)/s ){
            $cs_uri_stem     = $1;
            $cs_uri_query    = $2;
       }
    }

    # 打印成 IIS 的日志格式
    #Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip
    #cs(User-Agent) cs(Cookie) cs(Referer) sc-status sc-substatus sc-win32-status sc-bytes cs-bytes
    print "$date - $s_ip $cs_method $cs_uri_stem $cs_uri_query 80 $cs_username  $c_ip $cs_User_Agent $cs_Cookie $cs_Referer $sc_status 0 - $sc_bytes -\n";
}

 

Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪 ViVi 365Key 网摘 天极网摘 和讯网摘 博拉网 POCO 网摘 饭否 QQ 书签 Digbuzz 我挖网 Mister Wong
Tags:
  1. 网络安全
    Sep 2nd, 2010 at 18:48
    Reply | Quote | #1

    谢啦,找了很久

  2. admin
    Sep 2nd, 2010 at 22:04
    Reply | Quote | #2

    可能还要小小的修改,没测试的,别人需要,随手写了一个