Comando “Last”: Como mostrar o último login de usuário?

12

Como eu sei, o comando last mostra logins recentes de todos os usuários. Mas meu PC (CentOS) foi usado por aproximadamente um ano, e há muitos usuários logados. Eu tentei usar o comando last , mas ele apenas mostrou de junho de 2013 a setembro de 2013.

A minha pergunta é: como posso mostrar os utilizadores mais recentes que efetuaram login recentemente (por exemplo, de dezembro de 2013 a janeiro de 2014)?

    
por Thomas 09.01.2014 / 03:39

3 respostas

9

last lê um arquivo de log, geralmente /var/log/wtmp e imprime as entradas de tentativas de login bem-sucedidas feitas pelos usuários no passado. A saída é tal que a última entrada de usuários logados aparece no topo. No seu caso, talvez tenha saído de aviso por causa disso.

Para verificar quando o arquivo /var/log/wtmp foi escrito por último, você pode usar o comando stat :

stat /var/log/wtmp

Para imprimir a saída na ordem inversa, você pode canalizar a última saída para GNU tac (oposto de cat) da seguinte forma:

last | tac
    
por 09.01.2014 / 04:18
10

Você também pode usar o comando lastlog no Linux. Ele oferece a você controles mais granulares quanto a intervalos de datas ao examinar os registros de logins de usuários.

trecho da man page do lastlog

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

Exemplo

Para descobrir os usuários que fizeram login em um sistema nos últimos 100 dias.

$ 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

Isso mostra que as últimas vezes em que esses usuários efetuaram login nesse sistema. O intervalo de tempo mostra os últimos 100 dias. Antes de hoje ( -b 0 ) e depois de 100 dias atrás ( -t 100 ).

Você também pode mostrar todos os usuários omitindo qualquer intervalo e ver todos os usuários que já fizeram login e a última vez que eles fizeram login.

    
por 09.01.2014 / 04:33
0

Você pode tentar este 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
    
por 06.02.2018 / 13:14

Tags