ログイン方法(物理コンソールまたはSSH)を含む、ログインしたセッションとセッションの持続時間を監視したいと思います。
この情報があるようですが、utmpdump /var/log/utmp
すべてのフィールドを説明する文書が見つかりません。誰かが私を実現できますか?
答え1
フィールドは次のとおりです(struct utmp
括弧内のメンバー名 - 参照man 5 utmp
)。
- レコードタイプ(
ut_type
) - ログインプロセスPID(
ut_pid
) - 端末名のサフィックスまたは
inittab(5)
ID(ut_id
) - ユーザー名(
ut_user
) - デバイス名またはtty - "
/dev/
"(ut_line
) - リモートログイン用のホスト名または実行レベルメッセージ用のカーネルバージョン(
ut_host
) - リモートホストのインターネットアドレス(
ut_addr_v6
) - 入力された時間(
ut_time
または実際にut_tv.tv_sec
)
ut_type
最初のフィールド(または「レコードタイプ」)の可能な値はutmp(5)
(6
例:または「セッションリーダープロセスにログインしているユーザー」など)でLOGIN_PROCESS
説明されています。
答え2
print_utline
ソースコードの機能にはutmpdump
いくつかのヒントがあります。
static void print_utline(struct utmp ut, FILE *out)
{
....
/* pid id user line host addr time */
fprintf(out, "[%d] [%05d] [%-4.4s] [%-*.*s] [%-*.*s] [%-*.*s] [%-15s] [%-28.28s]\n",
ut.ut_type, ut.ut_pid, ut.ut_id, 8, UT_NAMESIZE, ut.ut_user,
12, UT_LINESIZE, ut.ut_line, 20, UT_HOSTSIZE, ut.ut_host,
addr_string, time_string);
}