¿Cómo extraigo el historial de inicio de sesión?

94

Necesito conocer el historial de inicio de sesión para un usuario específico (es decir, tiempo de inicio y cierre de sesión). ¿Cómo extraigo este historial para un rango de fechas específico en Linux?

shox
fuente

Respuestas:

133

Puedes probar el lastcomando:

last john 

Imprime el historial de inicio de sesión / salida del usuario john. Mientras que correr solo

last

imprime el historial de inicio de sesión / salida de todos los usuarios.

Izac
fuente
55
Esto solo devuelve valores para el mes actual en la mayoría de las distribuciones de Linux.
ewwhite
42

Si necesita retroceder más de un mes en el historial, puede leer el /var/log/wtmp.1archivo con el lastcomando.

last -f wtmp.1 johnmostrará el historial de inicios de sesión del mes anterior para el usuario john.

El último resultado del registro no es demasiado pesado y relativamente fácil de analizar, por lo que probablemente canalizaría el resultado a grep para buscar un patrón de fecha específico.

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

last -f /var/log/wtmp.1 john | grep -E 'Jul (1[0-9]|2[0-9]|30) 'adquirir del 10 al 30 de julio para el usuario john.

ewwhite
fuente
21

¿Cómo extraer el historial de inicio de sesión para un rango de fechas específico en Linux?

Un ejemplo para enumerar todos los usuarios que inician sesión del 25 al 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 extraer la fecha y hora en la columna correspondiente de la lastsalida
  • +%s para convertir la fecha y la hora en la época
  • -ge significar mayor o igual
  • -le representar menos o igual

También puede hacerlo para usuarios específicos con last <username>.

quanta
fuente
1
Esa es una expresión poderosa y fea. ¿No sería grep más limpio ya que la lastsalida es bastante legible?
ewwhite
3
¿Puedes grepdel "15 de agosto a las 09:00" al "25 de agosto a las 21:00"?
quanta
1
El OP no solicitó rangos de tiempo.
ewwhite
1
@ewwhite, la expresión me parece hermosa, si no te gusta el aspecto de la sintaxis bash, este puede no ser el sitio para ti.
ekerner
1
@ekerner Tienes razón. Iré a otro lugar;)
ewwhite