![Linux:如何从我的系统获取所有登录日志](https://linux22.com/image/52866/Linux%EF%BC%9A%E5%A6%82%E4%BD%95%E4%BB%8E%E6%88%91%E7%9A%84%E7%B3%BB%E7%BB%9F%E8%8E%B7%E5%8F%96%E6%89%80%E6%9C%89%E7%99%BB%E5%BD%95%E6%97%A5%E5%BF%97.png)
我想知道自去年以来用户登录我的系统的所有次数?
我使用了last
命令,但它没有用。
答案1
redhat-style linux 上的登录日志称为wtmp
( man wtmp
),/var/log/
默认存储在中,您可以使用utmpdump
(在 RHEL6 上)检索它们。
[root@server ~]# utmpdump /var/log/wtmp* | awk '$4~"root" {print}'
Utmp dump of /var/log/wtmp
[7] [01320] [ts/0] [root ] [pts/0 ] [192.168.1.101 ] [192.168.1.101 ] [Tue Sep 24 00:31:47 2013 UTC]
[7] [01817] [ts/3] [root ] [pts/3 ] [192.168.1.101 ] [192.168.1.101 ] [Tue Sep 24 00:38:22 2013 UTC]
[7] [01690] [ts/0] [root ] [pts/0 ] [192.168.1.101 ] [192.168.1.101 ] [Tue Sep 24 00:59:04 2013 UTC]
[7] [23641] [ts/0] [root ] [pts/0 ] [192.168.1.101 ] [192.168.1.101 ] [Wed Sep 25 19:12:44 2013 UTC]
[7] [03020] [ts/0] [root ] [pts/0 ] [192.168.1.100 ] [192.168.1.100 ] [Fri Sep 27 21:33:40 2013 UTC]
...
答案2
它似乎last
可以用来实现你想要做的事情。您需要将日期附加到最后一个命令以提取信息。
last | while read line; do date=`date -d "$(echo $line | awk '{ print $5" "$6" "$7 }')" +%s`; [[ $date -ge `date -d "Aug 25 00:00" +%s` && $date -le `date -d "Aug 28 00:00" +%s` ]] && echo $line; done
但是,如果您想查找有关特定用户的信息,可以将最后一个命令修改为,last username
然后通过管道将while
循环传递给它。它将为您提供特定用户过去一年的登录信息。
我测试了上面的命令,它在我的系统中运行得很好。我从以下位置获取了上述命令这里。
您可以更改命令中的日期以满足您的要求。