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.