Frage Wie extrahiere ich den Anmeldeverlauf?


Ich muss den Anmeldeverlauf für bestimmte Benutzer kennen (z. B. Anmelde- und Abmeldezeit), Wie extrahiere ich diesen Verlauf für einen bestimmten Zeitraum in Linux?


80
2017-08-28 08:00


Ursprung




Antworten:


Sie können das versuchen last Befehl:

last john 

Es druckt den Login / Out-Verlauf von Benutzer John aus. Während nur laufen

last

Gibt den Anmelde- / Ausgangsverlauf aller Benutzer aus.


115
2017-08-28 08:11



Dies liefert nur Werte für den aktuellen Monat in den meisten Linux-Distributionen. - ewwhite


Wenn Sie in der Geschichte mehr als einen Monat zurücklegen müssen, können Sie die /var/log/wtmp.1 Datei mit dem last Befehl.

last -f wtmp.1 john zeigt den Verlauf der Logins für den Benutzer des vorherigen Monats an john.

Die letzte Protokollausgabe ist nicht zu schwer und relativ leicht zu analysieren, daher würde ich wahrscheinlich die Ausgabe nach grep leiten, um nach einem bestimmten Datumsmuster zu suchen.

last john | grep -E 'Aug (2[0-9]|30) ' um den 20. bis 30. August zu zeigen. Oder etwas wie:

last -f /var/log/wtmp.1 john | grep -E 'Jul (1[0-9]|2[0-9]|30) ' 10. bis 30. Juli für Benutzer erwerben john.


39
2017-08-28 08:54





Wie extrahiere ich den Anmeldeverlauf für einen bestimmten Zeitraum in Linux?

Ein Beispiel, um alle Benutzer vom 25. bis 28. August aufzulisten:

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
  • awk '{ print $5" "$6" "$7 }' um die Datumszeit bei entsprechender Spalte aus zu extrahieren last Ausgabe
  • +%s um Datetime in Epochzeit zu konvertieren
  • -ge stehen für größer als oder gleich
  • -le stehen für weniger als oder gleich

Sie können dies auch für bestimmte Benutzer mit tun last <username>.


17
2017-08-28 08:50



Das ist ein mächtig-hässlicher Ausdruck. Wäre da nicht sauberer last Ausgabe ist ziemlich lesbar? - ewwhite
Können Sie grep von "15. August 09:00" bis "25. August 21:00"? - quanta
Das OP hat keine Zeiträume angefordert. - ewwhite
@ewwhite der Ausdruck sieht für mich schön aus, wenn Sie das Aussehen der Bash-Syntax nicht mögen, ist dies möglicherweise nicht die Website für Sie. - ekerner
@ekerner Du hast Recht. Ich werde woanders hingehen;) - ewwhite