⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 accesslog_parser.pl

📁 The Kannel Open Source WAP and SMS gateway works as both an SMS gateway, for implementing keyword b
💻 PL
字号:
#!/usr/bin/perl## accesslog_parser.pl## Kalle Marjola for project Kannel, based on stat.pl by# 2000-05-12 jarkko@iki.fiuse strict;my (%stat_in, %stat_out);my (%userstat_in, %userstat_out);my (%dailystat_in, %dailystat_out);my (%keywordstat_in);my $failed_send = 0;my $failed_rout = 0;my $rejected = 0;my $start = 0;my $ends = 0;my $line;while ($line = <STDIN>) {    chomp($line);    # does string begin with date    if ($line =~ /^(\d\d\d\d)-(\d\d)-(\d\d)\s+(\d\d)\:\d\d\:\d\d\s+(.*)$/) {	my ($year, $month, $day, $hour, $msg) =  ($1, $2, $3, $4, $5);	my ($sender, $receiver, $keyword) = 	    ($msg =~ /\[SMSC\:[^\]]*\] \[[^:]*\:([^\]]*)\] \[[^:]*:([^\]]*)\] \[[^:]*:(\w*)/i);	if ($msg =~ /receive sms/i) {	    $stat_in{$sender}{"$year-$month-$day $hour"}++;	    $userstat_in{$sender}++;	    $dailystat_in{"$year-$month-$day $hour"}++;	    $keywordstat_in{lc($keyword)}{"$year-$month-$day $hour"}++;	} elsif ($msg =~ /sent sms/i) {	    $stat_out{$receiver}{"$year-$month-$day $hour"}++;	    $userstat_out{$receiver}++;	    $dailystat_out{"$year-$month-$day $hour"}++;	} elsif ($msg =~ /failed send sms/i) {	    $failed_send++;	} elsif ($msg =~ /failed routing sms/i) {	    $failed_rout++;	} elsif ($msg =~ /rejected/i) {	    $rejected++;	} elsif ($msg =~ /log begins/i) {	    $start++;	} elsif ($msg =~ /log ends/i) {	    $ends++;	}    }}my $key;my $key2;# daily/hourly user (phone-number) specific statistics print "By phone number\n===============\n";print "Mobile Originated (from user):\n";foreach $key (sort keys %stat_in) {    print "$key:\n";    foreach $key2 (sort keys %{ $stat_in{$key} } ) {        print "\t$key2 = $stat_in{$key}{$key2}\n";    }    print "\t\t\t\tTotal: $userstat_in{$key}\n\n"; }print "Mobile Terminated (to user):\n";foreach $key (sort keys %stat_out) {    print "$key:\n";    foreach $key2 (sort keys %{ $stat_out{$key} } ) {	print "\t$key2 = $stat_out{$key}{$key2}\n";    }    print "\t\t\t\tTotal: $userstat_out{$key}\n\n"; }# statistics by keywordmy $total;print "By keyword\n==========\n";print "Mobile Originated (from user):\n";foreach $key (sort keys %keywordstat_in) {    print "$key:\n";    $total = 0;    foreach $key2 (sort keys %{ $keywordstat_in{$key} } ) {        print "\t$key2 = $keywordstat_in{$key}{$key2}\n";	$total += $keywordstat_in{$key}{$key2};    }    print "\t\t\t\tTotal: $total\n\n"; }# statistics by hour basicmy ($total_in, $total_out);print "Total usage\n===========\n";print "Mobile Originated (from user):\n";foreach $key (sort keys %dailystat_in) {    $total_in += $dailystat_in{$key};    print "$key = $dailystat_in{$key}\n";}print "\t\t\t\tTotal: $total_in\n\n"; print "Mobile Terminated (to user):\n";foreach $key (sort keys %dailystat_out) {    $total_out += $dailystat_out{$key};    print "$key = $dailystat_out{$key}\n";}print "\t\t\t\tTotal: $total_out\n\n"; print "$failed_send failed sendings, $failed_rout failed routing, $rejected rejected messages\n";my $ugly = $start - $ends;print "$start Kannel start-ups, $ugly crashes/ugly shutdowns\n";

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -