Comando "Ultimo": come mostrare il login utente più recente?


19

Come so, il lastcomando mostra gli accessi recenti di tutti gli utenti. Ma il mio PC (CentOS) è stato usato per circa un anno e ci sono molti utenti registrati. Ho provato a usare il lastcomando, ma è stato mostrato da giugno 2013 a settembre 2013.

La mia domanda è: come posso mostrare gli ultimi utenti che hanno effettuato l'accesso di recente, diciamo (da dicembre 2013 a gennaio 2014)?


È possibile verificare se il /var/log/wtmpfile è presente e l'ora dell'ultima modifica utilizzando stat.
MK

Inoltre, si noti che le ultime voci nell'output dell'ultimo comando sarebbero in alto.
MK

comunque per arrivare fino in fondo?
Thomas,

1
Provalast | tac
mkc

1
basta fare una statistica:stat /var/log/wtmp
MK

Risposte:


15

lastlegge da un file di registro, di solito /var/log/wtmpe stampa le voci dei tentativi di accesso riusciti effettuati in passato dagli utenti. L'output è tale che l'ultima voce degli utenti registrati appare in alto. Nel tuo caso forse è passato inosservato per questo.

Per verificare quando è /var/log/wtmpstato scritto il file per ultimo, puoi usare il statcomando:

stat /var/log/wtmp

Per stampare l'output al contrario, è possibile reindirizzare l'output dell'ultimo a GNU tac(opposto a cat) come segue:

last | tac

16

Puoi anche usare il comando lastlogcommand su Linux. Ti dà controlli più granulari per quanto riguarda gli intervalli di date quando si guarda attraverso i registri degli accessi utente.

estratto dalla pagina man di lastlog

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

Esempio

Per scoprire gli utenti che hanno effettuato l'accesso a un sistema negli ultimi 100 giorni.

$ 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

Ciò dimostra che le ultime volte questi utenti hanno effettuato l'accesso a questo sistema. L'intervallo di tempo mostra gli ultimi 100 giorni. Prima di oggi ( -b 0) e dopo 100 giorni fa ( -t 100).

Puoi anche mostrare a tutti gli utenti omettendo qualsiasi intervallo e vedendo solo tutti gli utenti che hanno mai effettuato l'accesso e l'ultima volta che hanno effettuato l'accesso.


0

Puoi provare questo script:

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
Benvenuto in Unix.SE. Potresti spiegare quali vantaggi ha questo approccio rispetto alle risposte esistenti?
Stephen Kitt,

questo script fornirà il timestamp dell'ultimo registro per tutti gli utenti in UNIX (AIX)

Grazie per le informazioni; per favore modifica la tua risposta per dirlo. Nota anche che la domanda riguarda CentOS, non AIX.
Stephen Kitt,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.