Descubra quanto tempo um usuário estava logado em um servidor Linux

3

No meu servidor Debian Squeeze, todos os logins e logouts de usuários são registrados no arquivo /var/log/auth.log

Jan 28 07:11:06 xen8 sshd[29826]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jan 28 07:33:47 xen8 sshd[29826]: pam_unix(sshd:session): session closed for user root
Jan 28 09:45:58 xen8 sshd[14374]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jan 28 09:47:36 xen8 sshd[14374]: pam_unix(sshd:session): session closed for user root
Jan 29 07:37:48 xen8 sshd[24940]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jan 29 07:38:11 xen8 sshd[24940]: pam_unix(sshd:session): session closed for user root
Jan 29 08:35:13 xen8 sshd[25707]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jan 29 08:37:06 xen8 sshd[25707]: pam_unix(sshd:session): session closed for user root
Jan 29 16:59:39 xen8 sshd[30725]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jan 29 17:00:58 xen8 sshd[30725]: pam_unix(sshd:session): session closed for user root
Jan 29 17:11:17 xen8 sshd[30832]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jan 29 18:11:37 xen8 sshd[30832]: pam_unix(sshd:session): session closed for user root

Por meio do ID do processo, um deve ser capaz de encontrar logins / logouts correspondentes e, em seguida, pode-se calcular o tempo. Mas minhas habilidades de sed / awk são muito limitadas, e talvez haja até mesmo um script / ferramenta pronto para esta tarefa? Existe uma maneira fácil de extrair as vezes que um usuário estava logado? Ou em um total (por arquivo), ou talvez até com alguns gráficos legais?

    
por andreas-h 30.01.2013 / 23:14

3 respostas

7

O utilitário ac fornecerá estatísticas sobre o login do usuário. Por exemplo, para ver o número total de segundos / minutos / horas, um usuário chamado user1 estava no sistema -

  ac -d user1

saída

 Jan 22  total        4.19
 Jan 23  total        8.01
 Jan 24  total        7.84
 Jan 25  total        6.79
 Jan 28  total        7.37
 Jan 29  total        8.69
 Today   total        7.15
    
por 30.01.2013 / 23:24
5

Experimente o comando last . Isso deve mostrar todas as informações que você está procurando.

    
por 30.01.2013 / 23:17
4

A última coluna da saída do último comando mostrará o que você quer

iain     pts/0        host          Mon Jan 28 22:44 - 23:12  (00:27)
    
por 30.01.2013 / 23:21