“last”在哪里存储用户主机名?

“last”在哪里存储用户主机名?

我正在研究:“last -d”命令。

-d: For non-local logins, Linux stores not only the host name of the remote host but its IP number as well. This option translates the IP number back into a hostname.

起初,我正在寻找类似的问题,特别是这个问题: 'last -d' 真的很慢

在我更新主机文件并添加:0.0.0.0 localhost 之前,我收到的主机名更少,IP 地址更多。这意味着 Linux 将主机名存储在操作系统中的某个位置,如果是这种情况,是否有任何方法可以在不使用命令的情况下访问主机名last -d

答案1

据介绍man last,我的 Arch Linux 系统将登录信息存储在/var/log/wtmp.它看起来像是在一个二进制格式- 也就是说,通常的文本工具只会向您显示其中的一部分。

此命令:xxd /var/log/wtmp | more显示文本格式的点分四组 IP 地址和完全限定的 DNS 名称。

我编写了以下小程序来向我展示/var/log/utmp.似乎并非每个条目都有主机名/IP 地址,并且二进制格式仅具有少量固定的主机名空间。

#include <stdio.h>
#include <utmp.h>

int
main(int ac, char **av)
{
        struct utmp *utmpp;
        utmpname("/var/log/wtmp");
        while (NULL != (utmpp = getutent())) {
                printf("%s\n", utmpp->ut_host);
        }
        endutent();
        return 0;
}

相关内容