所以我试图解析 FTP 日志并查看某个用户是否安全登录。到目前为止,在用户登录后,我可以拉出接下来的几行
cat proftpd.log.2 | grep -B 3 "USER $sillyvariable"
这是它创建的示例输出
::ffff:127.0.0.0 UNKNOWN ftp [04/Jan/2013:11:03:06 -0800] "AUTH TLS" 234 -
::ffff:127.0.0.0 UNKNOWN ftp [04/Jan/2013:11:03:06 -0800] "USER $sillyvariable" 331 -
现在这是我想要的完美示例,它显示AUTH TLS 消息和IP 匹配。然而,情况并非总是如此,因为许多用户不断地登录和注销,而且大多数时候输出都是困惑的。
有没有办法可以 grep 查找 USER $sillyvariable
并找到他/她在前一行中包含“AUTH TLS”的匹配 IP,这样我就可以知道他们安全登录了?我想你可以说我想 grep 用户,然后向后 grep 以查看他们源自的连接(匹配的 IP)是否安全。我有点坚持这一点,真的需要一些帮助。
谢谢!
最佳答案
$ grep -B3 'USER $sillyvariable' proftpd.log.2 |
tac | awk 'NR==1 {IP=$1} $1==IP {print}' | tac
::ffff:127.0.0.0 UNKNOWN ftp [04/Jan/2013:11:03:06 -0800] "AUTH TLS" 234 -
::ffff:127.0.0.0 UNKNOWN ftp [04/Jan/2013:11:03:06 -0800] "USER $sillyvariable" 331 -
这使用 tac
来反转 grep 结果中的行。然后它会查找 IP 地址与 USER
行中的匹配的所有行。最后,它再次运行 tac
以将行恢复为原始顺序。
关于linux - 如何在日志文件中查找变量的下一个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14506862/