我需要了解特定用户的登录历史记录(即登录和注销时间),如何在 Linux 中提取特定日期范围内的历史记录?
答案1
你可以尝试以下last
命令:
last john
它打印出用户 john 的登录/退出历史记录。而运行
last
打印出所有用户的登录/退出历史记录。
答案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) '
获取 7 月 10 日至 30 日的用户john
。
答案3
如何在 Linux 中提取特定日期范围的登录历史记录?
列出 8 月 25 日至 28 日登录的所有用户的示例:
last | while read line
do
date=`date -d "$(echo $line | awk '{ print $5" "$6" "$7 }')" +%s`
[[ $date -ge `date -d "Aug 25 00:00" +%s` && $date -le `date -d "Aug 28 00:00" +%s` ]] && echo $line
done
awk '{ print $5" "$6" "$7 }'
last
从输出中提取相应列的日期时间+%s
将日期时间转换为纪元时间-ge
代表大于或等于-le
代表小于或等于
您还可以使用 为特定用户执行此操作last <username>
。