3

私が作成したこのコード行で使用するのに最適なループは何ですか?ログ ファイルを調べて、失敗した行を見つけます$6。BASH と LINUX にはかなり新鮮で、ループを適切に動作させることはできません。

Sep 13 12:09:39 icarus sshd[14043]: Failed none for invalid user 55659
Sep 13 12:09:43 icarus sshd[14043]: pam_unix(sshd:auth): check pass; user unknown
Sep 13 12:09:43 icarus sshd[14043]: pam_unix(sshd:auth):
Sep 13 12:09:44 icarus sshd[14043]: Failed password for invalid user 55659
Sep 13 12:09:48 icarus sshd[14043]: pam_unix(sshd:auth): check pass; user unknown
Sep 13 12:09:50 icarus sshd[14043]: Failed password for invalid user 55659 from

サンプルコマンド

cat auth.log | sed -e 's/,//g' | awk -F" " '{print $6}'
4

4 に答える 4

1
$ grep Failed auth.log
Sep 13 12:09:39 icarus sshd[14043]: Failed none for invalid user 55659
Sep 13 12:09:44 icarus sshd[14043]: Failed password for invalid user 55659
Sep 13 12:09:50 icarus sshd[14043]: Failed password for invalid user 55659 from
于 2013-02-13T06:06:36.463 に答える
0

印刷する代わりに、 「失敗」$6に一致する行を印刷するだけです。$6

持っていた

cat auth.log | sed -e 's/,//g' | awk -F" " '{print $6}'

使用できます

sed -e 's/,//g' auth.log | awk '$6=="Failed"'

(他の人が指摘しているsedように、ファイル名を引数として取ることができ、awkデフォルトでは空白で区切られるため、-F引数を指定する必要はありません。)

(サンプル入力にはコンマが含まれていないため、sedコマンドは必要ない場合もあります。)

于 2013-02-13T13:23:03.313 に答える
0

awkを使用する場合:

awk -F" " -e '/Failed/ {print $0}' auth.log

sedやcatは必要ありません。

于 2013-02-13T06:07:17.730 に答える
0

これは、「Failed」(大文字と小文字を区別) を含む行を探し、単純に出力します。

awk '/Failed/ {print $0}' auth.log

これがあなたが探していたものだと思います。

于 2013-02-13T06:16:33.893 に答える