CentOS7チュートリアルでSSHを介して接続しようとしているユーザー数の小さなテーブルを取得するコマンドを見つけました。
|try
ip
user
これ
コードは以下のように表示されます。
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個の値のみが表示されます。