0

perl の構文が新しく、ログ ファイルからパスワードの失敗回数をカウントするカウンターを設定し、合計回数をコンソールに出力しようとしています。最後に合計が 1 つだけではなく、多くの数字が画面に出力されます。どんな考えや指示も役に立ちます。

#!/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);
4

1 に答える 1

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
于 2013-03-15T03:58:46.107 に答える