创建日志文件计数器

时间:2013-03-15 03:54:11

标签: linux perl

perl的语法新手,尝试设置一个计数器,计算从日志文件中发生失败密码的时间,然后打印出总数到控制台。我在屏幕上打印了很多数字,而不是最后一个。任何想法或方向都会有所帮助。

#!/usr/bin/perl
$count = 0;

open (MYFILE, 'auth.log');
while (my $line = <MYFILE>){
if ($line =~ /Failed password/){
$count++;
}
print $count;
#print "$line\n" if $line =~ /Failed password/;
#this was a print test to see if it would only print the failed password strings in the file.    
}
close (MYFILE);

1 个答案:

答案 0 :(得分:4)

您需要将print $count移到while循环之外。

如果文件丢失或无法打开,您还应该检查open我们不知道的其他人的返回代码。

#!/usr/bin/perl

use warnings;
use strict;

my $count = 0;

open (my $fh, '<', 'auth.log') or die $!;
while (my $line = <$fh>){
    if ($line =~ /Failed password/){
        $count++;
    }
}
close $fh;
print $count;

最后,这是从命令行执行此操作的另一种方法:

grep -c 'Failed password' auth.log