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


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


80
2017-08-28 08:00


origen




Respuestas:


Puedes probar el last mando:

last john 

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

last

imprime el historial de inicio / salida de todos los usuarios.


115
2017-08-28 08:11



Esto solo devuelve valores para el mes actual en la mayoría de las distribuciones de Linux. - ewwhite


Si necesita retroceder más de un mes en la historia, puede leer el /var/log/wtmp.1 archivo con el last mando.

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

La última salida de registro no es demasiado pesada y relativamente fácil de analizar, por lo que probablemente canalizaría la salida a grep para buscar un patrón de fecha específico.

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

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


39
2017-08-28 08:54





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

Un ejemplo para listar todos los usuarios que inician sesión del 25 al 28 de 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 last salida
  • +%s para convertir datetime al tiempo de época
  • -ge representar mayor o igual
  • -le representa menor o igual

También puedes hacerlo por usuario específico con last <username>.


17
2017-08-28 08:50



Esa es una expresión muy fea. No sería grep más limpio ya que last ¿La salida es bastante legible? - ewwhite
Puedes grep de "Aug 15 09:00" a "Aug 25 21:00"? - quanta
El OP no pidió rangos de tiempo. - ewwhite
@ewwhite la expresión me parece hermosa, si no te gusta el aspecto de la sintaxis de bash, puede que este no sea el sitio para ti. - ekerner
@ekerner Tienes razón. Iré a otro lado;) - ewwhite