Last

“最後”在哪裡儲存使用者主機名?

  • March 8, 2015

我正在調查:’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

據了解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;
}

引用自:https://unix.stackexchange.com/questions/188889