如何获取用户上次登录日期时间作为符合 ISO 8601 的日期或时间戳?

如何获取用户上次登录日期时间作为符合 ISO 8601 的日期或时间戳?

我正在 macOS (Ventura 13.6.3) 上运行 zsh (版本 5.9 x86_64-apple-darwin22.0)。

我想知道给定用户在过去 X 天内是否登录过。为了实现此目的,我想获取用户的上次登录日期时间,如果没有登录,则获取 null。我尝试使用last命令来执行此操作。我的问题是,当我执行

last -1 "john_smith"

我得到这个字符串:

john_smith    ttys001    Wed Dec 17 19:19    still logged in

我可以Dec 17使用 摆脱这个字符串last -1 "john_smith" | awk '{print $4, $5}'。但这并不能解决我的问题,因为Dec 17不包含年份。不知道是不是2023-12-17 或1971-12-17。

有没有什么方法可以强制last生成正常的符合 ISO 8601 的日期(或时间戳),或者至少在其标准输出中添加年份,这样我就可以了Dec 17, 2023?或者,我可以使用任何其他命令来代替last为给定用户获取此数据吗?

更新

我找不到在lastzsh v. 5.9 上获取完整登录日期的方法,最终使用了另一个命令(找到/Users该命令下的所有文件夹的修改时间超过或等于 123 天,功劳归于本文):

find /Users -type d -maxdepth 1 -mindepth 1 -mtime +123d

答案1

根据man last

-y          Report the year in the session start time.

所以你可以运行:

last -1y "john_smith"

并在日期中注明年份。

相关内容