我正在研究:“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;
}