- 空间积分
- 0
- 信誉积分
- 100
- UID
- 540793
- 阅读权限
- 50
- 积分
- 3910
- 帖子
- 762
- 精华
- 0
- 可用积分
- 3910
- 专家积分
- 0
- 在线时间
- 412 小时
- 注册时间
- 2005-08-31
- 最后登录
- 2011-03-21
 
- 帖子
- 762
- 主题
- 116
- 精华
- 0
- 可用积分
- 3910
- 专家积分
- 0
- 在线时间
- 412 小时
- 注册时间
- 2005-08-31
- 最后登录
- 2011-03-21
- 论坛徽章:
- 0
|
发表于 2009-06-30 21:42:50
|显示全部楼层
#!/usr/bin/perl -w
use strict;
use POSIX qw/strftime/;
my %hash;
my $in="udpInDatagrams";
my $out="udpOutDatagrams";
my $log="/log/udp.log";
open NETSTAT,"netstat -s -P udp 1 2 |" or die "$!";
while (<NETSTAT>) {
$hash{$1}=$2 if /($in)\s+=\s+(\d+)\s+/;
$hash{$1}=$2 if /($out)\s+=\s+(\d+)\s+/;
}
close NETSTAT;
my $date=strftime "%Y%m%d%H%M",localtime;
open FILE,">> $log" or die "$!";
print FILE "$date\t$hash{$in}\t$hash{$out}\n";
close FILE; |
还有一个,用到reference。
my (%hash,@list);
open FILE,"< $log" or die "$!";
open FILE_FINAL,"> $log_final" or die "$!";
while (<FILE>) {
chomp;
@list=split /\s+/,$_;
my $ref=\@list;
if (exists $hash{$ref->[0]}) {
$hash{$ref->[0]}=[$ref->[1]+$hash{$ref->[0]}->[0],$ref->[2]+$hash{$ref->[0]}->[1]];
} else {
$hash{$list[0]}=[$ref->[1],$ref->[2]];
}
}
foreach (sort keys %hash) {
print FILE_FINAL "$_" . " " . "@{$hash{$_}}" . "\n";
}
close FILE_FINAL;
close FILE; |
[ 本帖最后由 gaochong 于 2009-6-30 21:45 编辑 ] |
|