
Aug 12 01:30:26 server.example.com sshd[19486]: Failed password for root from X.X.X.X port 50528 ssh2
Aug 12 01:30:26 server.example.com sshd[19486]: Received disconnect from X.X.X.X port 50528:11: Bye Bye [preauth]
Aug 12 01:30:26 server.example.com sshd[19486]: Disconnected from X.X.X.X port 50528 [preauth]
Aug 12 01:30:28 server.example.com sshd[19491]: Failed password for root from X.X.X.X port 59628 ssh2
「/var/log/secure」から取得したサンプル Linux SSH ログ ファイルがあります。PID (この例では 19491 と 19486) をフィルターしたいと思います。これを bash で実現するにはどうすればよいでしょうか?
答え1
awk の使用:
awk -F '[][]' '{print $2}' /var/log/secure
-F '[][]'
ファイルの区切りを括弧で囲む$2
2 番目のフィールドを検証します。
答え2
これは少し不器用ですが、誰かがより短いバージョンを投稿してくれることを願っています。sedコマンドを使用して「[」と「]」の文字を空白に置き換え、awkコマンドを使用して6番目のフィールドを出力しました。
# cat /var/log/secure | sed 's/\[/ /g' | sed 's/\]/ /g' | awk ' {print $6}'
19486
19486
19486
19491