Linux: Wie bekomme ich alle Login-Logs von meinem System? [Geschlossen]

12

Ich möchte wissen, wie oft sich ein Benutzer seit letztem Jahr in meinem System anmeldet.
Ich habe den lastBefehl verwendet, aber er ist nicht nützlich.

gabo34
quelle
1
Willkommen bei Stack Exchange! Bitte denken Sie daran, dass wir alle Freiwillige hier sind. Daher erwarten wir, dass Sie Grundlagenforschung betrieben haben. Es sieht so aus, als hätten Sie einen Anfang - da Sie den Versuch des lastBefehls erwähnen -, aber Sie sollten mehr Nachforschungen anstellen, und auf jeden Fall haben Sie nicht angegeben, warum der lastBefehl nicht nützlich ist. Definieren Sie außerdem "angemeldet". Möchten Sie Konsolenanmeldungen verfolgen? SSH-Anmeldungen? Emacs verbieten, telnetLogins? oder einfach irgendetwas, das sich mit PAM authentifiziert? genau sein .
strugee

Antworten:

10

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]
...
Thomas
quelle
1

Es scheint lastverwendet 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 usernameund dann die whileSchleife 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.

Ramesh
quelle