Linux RADIUS日志

Linux RADIUS日志,linux,bash,shell,authentication,centos,Linux,Bash,Shell,Authentication,Centos,我有一个名为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

我有一个名为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命令来执行此操作。我将感谢你

仅获取定义用户的行(并写入文件)的快速解决方案:

从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是一个列出所有用户名的文件,用换行符分隔,LOGFILE是您的radius日志文件

实际上有400个独立的用户,我不能这样做,我的老板让我提供10分钟内不活动的用户列表好的。。如果你有一个用户列表,你可以这样做。如果没有,您可以使用awk,但我不能帮助您使用awk。对于用户列表,即使将每个用户复制粘贴到grep命令,也需要大约2-3个小时。我老板想在10分钟内搞定。我试过很多awk的例子,但是还没有成功。对。。。你必须用每个用户名建立一个调用grep的(shell)脚本。它对每个用户都非常有效。我将在2017年7月27日16:18:52发布:Auth:Login OK:[maqsod.ahmed](从客户端设备端口317 cli 10.10.10.40)DeviceIP:172.16.100.254 2017年7月27日15:37:11:Auth:Login OK:[shariq.iqbal](来自客户端设备端口1 cli 10.10.10.173)DeviceIP:1.6.0.20 Mon Jul 24 09:21:43 2017:Auth:Login OK:[raheel.khan](来自客户端设备端口1 cli 10.10.10.252)DeviceIP:10.2.100.103现在我可以用日期对输出进行排序,并且我想将其输出到文件中。希望您能提供帮助。
#!/bin/bash
for i in `cat USERLIST`
do
    tac LOGFILE | grep -m1 $i
done