/var/log/wtmp
根据手册页的Linux 日志http://linux.die.net/man/5/wtmp存储许多系统事件的“utmp”事件,例如登录(LOGIN_PROCESS ut_type
)、更改运行级别(RUN_LVL ut_type
)等。
有last
一个实用程序,它可以解析 wtmp 并打印谁登录了系统以及何时重新启动。
有没有工具可以显示wtmp
日志中的其他记录?
将信息写入日志的过程是什么wtmp
?
答案1
有几个简单的 perl 解析器用于 wtmp 文件,例如wtmp.pl
“Brocade Blue”
http://brocadeblue.blogspot.com/2012/10/perl-script-to-parse-wtmp-logs.html
完整源代码,wtmp.pl
修正了一些小错误:
#!/usr/bin/perl
@type = (
"Empty", "Run Lvl", "Boot", "New Time", "Old Time", "Init",
"Login", "Normal", "Term", "Account"
);
$recs = "";
while (<>) {
$recs .= $_;
}
foreach ( split( /(.{384})/s, $recs ) ) {
next if length($_) == 0 ;
my ( $type, $pid, $line, $inittab, $user, $host, $t1, $t2, $t3, $t4, $t5 ) =
$_ =~ /(.{4})(.{4})(.{32})(.{4})(.{32})(.{256})(.{4})(.{4})(.{4})(.{4})(.{4})/s;
if ( defined $line && $line =~ /\w/ ) { ##FILTER
$line =~ s/\x00+//g;
$host =~ s/\x00+//g;
$user =~ s/\x00+//g;
printf(
"%s %-8s %-12s %10s %-45s \n",
scalar( gmtime( unpack( "I4", $t3 ) ) ),
$type[ unpack( "I4", $type ) ],
$user, $line, $host
);
}
}
printf "\n"
(.{4})
该脚本可能无法在 64 位机器上运行。应针对 64 位环境修复“384”和较长的行。
if
PS:若要查看全部记录,请禁用标有“ ”的表达式##FILTER
。
答案2
您应该查看审计日志。
尝试使用ausearch
,它提供了utmp
更多功能。