perl を初めて使用するので、正規表現とその使用方法について頭を悩ませるのに役立つ可能性があります。成功したログインと失敗したログインの両方を含むファイル名 auth.log があります。ファイルを読み込んで 1 行ずつ読むための正しいコードを手に入れたので、失敗したものを取り出して日付ごとに画面に出力する方法を理解する必要があります。以下は、失敗したログインの例と、ファイルを読み取るコードです。正規表現が失敗した単語の一致を探すことは知っていますが、構文を取得できません。
Sep 14 07:23:59 icarus sshd[10393]: 137.190.220.15 ポート 64704 ssh2 からの someUser のパスワードの失敗
Sep 14 07:24:04 icarus sshd[10393]: 137.190.220.15 ポート 64704 ssh2 からの someUser のパスワードの失敗
Sep 14 07:30:17 icarus sshd[10523]: 137.190.19.13 ポート 58506 ssh2 から someUser のパスワードを受け入れました
ファイル内の失敗したパスワードの数を吐き出すためだけにカウント変数を開始しようとしていると思います。このスクリプトを実行すると、最終的にはプロンプトで終了する大量の数字が得られます。これは、少なくともauth.log全体でまだ実行されていることを意味しますか、それとも終わりがないのでしょうか? 何か案は?
#!/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 test to make sure it was was getting all the Failed password attempts in the auth.log.
}
close (MYFILE);
どんな助けでも素晴らしいでしょう。