Como extraio o histórico de login?

85

Eu preciso saber o histórico de login para um usuário específico (por exemplo, o tempo de login e logout), Como faço para extrair este histórico para um período específico no Linux?

    
por shox 28.08.2011 / 10:00

3 respostas

120

Você pode tentar o comando last :

last john 

Imprime o histórico de login / saída do usuário john. Considerando que executando apenas

last

imprime o histórico de login / logout de todos os usuários.

    
por 28.08.2011 / 10:11
40

Se você precisar ir mais longe no histórico do que um mês, leia o arquivo /var/log/wtmp.1 com o comando last .

last -f wtmp.1 john mostrará o histórico de logins do mês anterior para o usuário john .

A última saída de log não é muito pesada e relativamente fácil de analisar, então eu provavelmente canalizo a saída para o grep para procurar um padrão de data específico.

last john | grep -E 'Aug (2[0-9]|30) ' para mostrar de 20 a 30 de agosto. Ou algo como:

last -f /var/log/wtmp.1 john | grep -E 'Jul (1[0-9]|2[0-9]|30) ' para adquirir de 10 a 30 de julho para o usuário john .

    
por 28.08.2011 / 10:54
19

How to extract login history for specific date range in Linux?

Um exemplo para listar todos os usuários de login de 25 a 28 / agosto:

last | while read line
do
    date='date -d "$(echo $line | awk '{ print $5" "$6" "$7 }')" +%s'
    [[ $date -ge 'date -d "Aug 25 00:00" +%s' && $date -le 'date -d "Aug 28 00:00" +%s' ]] && echo $line
done
  • awk '{ print $5" "$6" "$7 }' para extrair o tempo de data na coluna correspondente de last output
  • +%s para converter datetime em tempo de epoch
  • -ge significa maior ou igual a
  • -le representa menos ou igual a

Você também pode fazer isso para um usuário específico com last <username> .

    
por 28.08.2011 / 10:50