„Ostatnie” polecenie: jak pokazać najnowszy login użytkownika?


19

Jak wiem, lastpolecenie pokazuje ostatnie logowania wszystkich użytkowników. Ale mój komputer (CentOS) był używany od około roku i jest zalogowanych wielu użytkowników. Próbowałem użyć lastpolecenia, ale wyświetlało się ono tylko od czerwca 2013 r. Do września 2013 r.

Moje pytanie brzmi: jak mogę pokazać ostatnich użytkowników, którzy ostatnio się zalogowali, powiedzmy (od grudnia 2013 do stycznia 2014)?


Czy możesz sprawdzić, czy /var/log/wtmpplik jest obecny, i czas jego ostatniej zmiany za pomocą stat.
mkc

Zauważ też, że najnowsze wpisy w wynikach ostatniego polecenia będą na górze.
mkc

w każdym razie, aby zejść na sam dół?
Thomas

1
Spróbujlast | tac
mkc,

1
po prostu zrób statystyki:stat /var/log/wtmp
mkc

Odpowiedzi:


15

lastzwykle czyta z pliku dziennika /var/log/wtmpi drukuje wpisy udanych prób logowania dokonanych przez użytkowników w przeszłości. Dane wyjściowe są takie, że ostatnio zalogowani użytkownicy są wyświetlani na górze. W twoim przypadku być może z tego powodu nie został zauważony.

Aby sprawdzić, kiedy plik /var/log/wtmpzostał zapisany jako ostatni, możesz użyć statpolecenia:

stat /var/log/wtmp

Aby wydrukować dane wyjściowe w odwrotnej kolejności, możesz przesyłać dane wyjściowe od ostatniego do GNU tac(przeciwnego do cat) w następujący sposób:

last | tac

16

Możesz także użyć polecenia lastlogcommand w systemie Linux. Zapewnia bardziej szczegółową kontrolę zakresów dat podczas przeglądania dzienników logowania użytkownika.

fragment strony man lastlog

   lastlog - reports the most recent login of all users or of a given user

Przykład

Aby dowiedzieć się, którzy użytkownicy zalogowali się do systemu w ciągu ostatnich 100 dni.

$ lastlog -b 0 -t 100
Username         Port     From             Latest
sam              pts/0    pegasus          Wed Jan  8 20:32:25 -0500 2014
joe              pts/0    192.168.1.105    Thu Dec 12 12:47:11 -0500 2013

To pokazuje, że ostatni raz użytkownicy logowali się do tego systemu. Zakres czasu pokazuje ostatnie 100 dni. Przed dzisiaj ( -b 0) i po 100 dniach temu ( -t 100).

Możesz również pokazać wszystkim użytkownikom, pomijając dowolny zakres i po prostu zobaczyć każdy użytkownik, który kiedykolwiek był zalogowany, i ostatni raz się zalogowali.


0

Możesz wypróbować ten skrypt:

for user in $( awk -F: '{ print $1}' /etc/passwd)
do
lastlog=$(sudo lsuser -a time_last_login $user | awk -F'=' '{print $NF}')
echo "$user         \c"; perl -le "print scalar localtime($lastlog);"
done

1
Witamy w Unix.SE. Czy możesz wyjaśnić, jakie korzyści ma to podejście w porównaniu z istniejącymi odpowiedziami, jeśli takie istnieją?
Stephen Kitt

ten skrypt da znacznik czasu ostatniego dziennika dla wszystkich użytkowników w systemie UNIX (AIX)

Dzięki za informację; proszę edytować swoją odpowiedź wspomnieć, że. Zauważ też, że pytanie dotyczy CentOS, a nie AIX.
Stephen Kitt,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.