このスクリプトはCentOS7でどのように機能しますか?

このスクリプトはCentOS7でどのように機能しますか?

CentOS7チュートリアルでSSHを介して接続しようとしているユーザー数の小さなテーブルを取得するコマンドを見つけました。

|tryipuser

これ

コードは以下のように表示されます。

zgrep -hi "Failed password for " /var/log/secure* | sed "s/invalid user //" | tr -s " " | awk '{print $11" "$9}' | sort | uniq -c | sort -rn | head -20

zgrep -hi "Failed password for " /var/log/secure* | 
sed "s/invalid user //" | 
tr -s " " | 
awk '{print $11" "$9}' | 
sort | 
uniq -c | 
sort -rn | 
head -20

どのように動作するか知りたいです。

答え1

最初のコマンドは、/var/log/secure ログで失敗したログイン試行を検索します。

zgrep -hi "Failed password for " /var/log/secure*

次の結果が生成されます。

Aug  1 21:22:53 jbclamp001 sshd[40401]: Failed password for jbutryn from ip.ip.ip.ip port 55843 ssh2

注文する:

sed "s/invalid user //"

クエリ「無効なユーザー」を「」に置き換えてください。

注文する:

tr -s " "

追加の空白文字は文字列から削除されます。

注文する:

awk '{print $11" "$9}'

次に、列11と9のみをインポートして印刷します(これはIPアドレスとユーザー名です)。

注文する:

sort

では、すべての結果が英数字でソートされますか?

注文する:

uniq -c

重複した値はすべて削除されます

注文する:

sort -rn

リストを逆順に並べ替えますか?

注文する:

head -20

結果の最初の20個の値のみが表示されます。

関連情報