我有一个名为Radius的程序,用于验证用户登录。它正在CentOS服务器上运行。
日志位于/var/log/radius.log中。
它们如下:
Mon Jul 24 22:17:08 2017 : Auth: Login incorrect: [faaiz.aleem] (from client PTCL-VPN port 28 cli 116.213.34.97) DeviceIP: 192.168.30.101
Mon Jul 24 23:32:41 2017 : Auth: Login OK: [muhammad.razzaq] (from client PTCL-VPN port 29 cli 45.116.233.62) DeviceIP: 192.168.30.101
Tue Jul 25 03:06:08 2017 : Auth: Login OK: [sadiq.akhter] (from client devices port 1 cli 192.168.141.1) DeviceIP: 1.8.3.11
Tue Jul 25 03:07:54 2017 : Auth: Login OK: [sadiq.akhter] (from client devices port 1 cli 10.88.33.2) DeviceIP: 1.6.16.1
Tue Jul 25 09:44:39 2017 : Auth: Login incorrect: [shariq.iqbal] (from client devices port 1 cli 10.10.10.173) DeviceIP: 1.6.10.11现在,我想对每个用户进行排序,例如,sadiq.akhter,以及他们最后的登录。请建议一个好的bash脚本或Linux命令来这样做。我会感谢你的。
发布于 2017-07-25 06:22:31
使用定义的用户(并写入文件)只获取行的快速解决方案:
grep "USERNAME" /var/log/radius.log > log_for_user.log从grep获得的最后一行应该是最后的登录记录。
您可以使用tac以反向顺序打印日志文件,并使用"grep -m1 .“只获得一个(最后一个)匹配。
返回日志中带有用户名的最后一行:
tac /var/log/radius.log | grep -m1 "USERNAME"因此,在shell脚本中,它可以如下所示,将所有最近的条目返回给所有用户:
#!/bin/bash
for i in `cat USERLIST`
do
tac LOGFILE | grep -m1 $i
done其中,USERLIST是一个文件,列出了所有用户名,以换行符分隔,日志文件是您的radius日志文件。
https://stackoverflow.com/questions/45295204
复制相似问题