Comando "Último": como mostrar o login mais recente do usuário?


19

Como eu sei, o lastcomando mostra logins recentes por todos os usuários. Mas meu PC (CentOS) é usado há aproximadamente um ano e há muitos usuários conectados. Tentei usar o lastcomando, mas ele foi exibido de junho a setembro de 2013.

Minha pergunta é: como posso mostrar os usuários mais recentes que fizeram login recentemente, digamos (dezembro de 2013 a janeiro de 2014)?


Você pode verificar se o /var/log/wtmparquivo está presente e sua última alteração usando stat.
Mkc

Além disso, observe que as entradas mais recentes na saída do último comando estariam na parte superior.
Mkc

de qualquer maneira para fazê-lo até o fundo?
Thomas

11
Tentelast | tac
mkc

11
basta fazer um stat:stat /var/log/wtmp
mkc

Respostas:


15

lastlê de um arquivo de log, normalmente /var/log/wtmpe imprime as entradas de tentativas bem-sucedidas de login feitas pelos usuários no passado. A saída é tal que a última entrada de usuários conectados aparece na parte superior. No seu caso, talvez tenha sido esquecido por causa disso.

Para verificar quando o arquivo /var/log/wtmpfoi gravado pela última vez, você pode usar o statcomando:

stat /var/log/wtmp

Para imprimir a saída no sentido inverso, você pode canalizar a saída do último para GNU tac(oposto ao gato) da seguinte maneira:

last | tac

16

Você também pode usar o comando lastlogcommand no Linux. Oferece controles mais granulares quanto a intervalos de datas ao examinar os logs de logins do usuário.

trecho da página do manual lastlog

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

Exemplo

Para descobrir os usuários que efetuaram login no 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 fizeram login neste 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 apenas vendo todos os usuários que já efetuaram login e a última vez que efetuaram login.


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

11
Bem-vindo ao Unix.SE. Você poderia explicar quais vantagens essa abordagem tem sobre as respostas existentes, se houver alguma?
Stephen Kitt

esse script fornecerá o último registro de data e hora do log para todos os usuários no UNIX (AIX)

Obrigado pela informação; por favor edite sua resposta de mencionar isso. Observe também que a pergunta é sobre o CentOS, não o AIX.
Stephen Kitt
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.