「最後」はユーザーのホスト名をどこに保存しますか?

「最後」はユーザーのホスト名をどこに保存しますか?

私は "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;
}

関連情報