我需要知道特定用户的登录历史记录(即登录和注销时间),
如何在Linux中提取特定日期范围的历史记录?

#1 楼

您可以尝试使用last命令:而仅运行

last john 


会打印出所有用户的登录/退出历史记录。

评论


在大多数Linux发行版中,这仅返回当月的值。

–ewwhite
11年8月28日在22:55

#2 楼

如果您需要回溯一个月以上的历史记录,可以使用/var/log/wtmp.1命令读取last文件。

last -f wtmp.1 john将显示用户john上个月的登录历史记录。

最后一个日志输出不太沉重并且相对容易解析,因此我可能会将输出通过管道传输到grep以查找特定的日期格式。

last john | grep -E 'Aug (2[0-9]|30) '显示8月20日至30日。或类似这样的内容:

last -f /var/log/wtmp.1 john | grep -E 'Jul (1[0-9]|2[0-9]|30) '为用户john获取7月10日至30日。

#3 楼


如何在Linux中提取特定日期范围的登录历史记录?


示例列出所有从8月25日至28日登录的用户:

last | while read line
do
    date=`date -d "$(echo $line | awk '{ print " "" " }')" +%s`
    [[ $date -ge `date -d "Aug 25 00:00" +%s` && $date -le `date -d "Aug 28 00:00" +%s` ]] && echo $line
done




awk '{ print " "" " }'last输出中提取相应列的日期时间

+%s将日期时间转换为纪元时间

-ge代表大于或等于

-le代表小于或等于

也可以使用last <username>为特定用户使用。

评论


那真是个丑陋的表情。由于最后的输出可读性强,grep会更干净吗?

–ewwhite
11年8月28日在13:33

您可以从“ 8月15日09:00”到“ 8月25日21:00”吗?

– Quanta
11年8月28日在13:45

OP没有要求时间范围。

–ewwhite
11年8月28日在21:18

@ewwhite表达式对我来说看起来很漂亮,如果您不喜欢bash语法的外观,那么该网站可能不适合您。

– ekerner
17-10-18在6:53



@ekerner你是对的。我会去别的地方;)

–ewwhite
17-10-18在12:15