是否有一个程序可以显示如下格式的登录消息:
Last login: Wed Oct 24 16:40:33 2012
或者我必须编写自己的程序/脚本?我想知道 Linux 内核(或其他人)是否有命令可以执行此操作。
答案1
内核不跟踪登录信息。您可以配置 PAM ( /etc/pam.d
) 来调用pam_lastlog.so
模块,它会准确显示您想要的内容:
session optional pam_lastlog.so noterm nohost
或者更详细一点:
session optional pam_lastlog.so
或者也打印失败的登录:
session optional pam_lastlog.so showfailed
在 Fedora 上,它可能会转到/etc/pam.d/system-login
或/etc/pam.d/gdm-password
,我不确定。
信息存储在/var/log/wtmp
和中/var/log/lastlog
。
答案2
我编写了一些代码来完成这个任务:
LINE=`lastlog -u $USER | head -n2 | tail -n1`;
WORDS=`echo "$LINE" | wc -w`;
if [ "x$WORDS" = "x9" ]; then
echo "$LINE" | awk '{ printf "Last login: %s %s %s %s %s from %s\n", $4, $5, $6, $7, $9, $3 }';
else
echo "Unsupported case.";
fi;
它不适用于非远程登录,但我在无头服务器上运行代码,因此 99.9% 的登录将是远程登录;另外 0.1% 将是我在“附加头”以修复ssh
问题或类似问题时进行的。