我想监视登录的会话,包括他们登录的方式(物理控制台或 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
) - 远程主机的 Internet 地址 (
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);
}