如何从Linux SSH安全日志中过滤PID?

如何从Linux SSH安全日志中过滤PID?
  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

这有点笨拙,但我希望有人可以发布一个较短的版本:我使用 sed 命令将“[”和“]”字符替换为空格,然后使用 awk 命令打印第 6 个字段

# cat /var/log/secure | sed 's/\[/ /g' | sed 's/\]/ /g' | awk ' {print $6}'
19486
19486
19486
19491

相关内容