Antworten:
Die Anmeldeprotokolle unter Linux im Redhat-Stil heißen wtmp
( man wtmp
) und werden /var/log/
standardmäßig gespeichert. Sie können sie mit utmpdump
(unter RHEL6) abrufen.
[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]
...
Es scheint last
verwendet werden zu können, um das zu erreichen, was Sie versuchen zu tun. Sie müssen das Datum an den letzten Befehl anhängen, um die Informationen zu extrahieren.
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
Wenn Sie jedoch Informationen zu einem bestimmten Benutzer suchen möchten, können Sie den letzten Befehl als ändern last username
und dann die while
Schleife an ihn weiterleiten. Sie erhalten die Informationen zu den Anmeldeinformationen eines bestimmten Benutzers für das letzte Jahr.
Ich habe den obigen Befehl getestet und er funktioniert in meinem System einwandfrei. Ich habe den obigen Befehl von hier aus übernommen .
Sie können das Datum im Befehl an Ihre Anforderungen anpassen.
last
Befehls erwähnen -, aber Sie sollten mehr Nachforschungen anstellen, und auf jeden Fall haben Sie nicht angegeben, warum derlast
Befehl nicht nützlich ist. Definieren Sie außerdem "angemeldet". Möchten Sie Konsolenanmeldungen verfolgen? SSH-Anmeldungen? Emacs verbieten,telnet
Logins? oder einfach irgendetwas, das sich mit PAM authentifiziert? genau sein .