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.
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?
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
.
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>
.