¿Alguna forma de obtener las últimas veces que la pantalla se desbloqueó en macOS?

21

Estaría inmensamente agradecido si alguien me ayudara a desbloquear la última pantalla (como ir al menú Apple> pantalla de bloqueo). Con desbloquear, quiero decir que cuando bloqueas la pantalla, debes desbloquearla ingresando la contraseña. Supongo que esto está registrado en algún archivo de registro o hay algún comando de Terminal para obtener esto.

Supongo que esto debe ser posible porque, cuando usas controles parentales y configuras un límite de tiempo para un usuario, si el usuario bloquea la pantalla, el tiempo en la pantalla de bloqueo no parece contar con el tiempo permitido, que parece ¿implica que las pantallas de bloqueo están registradas en algún archivo de registro?

Lo siguiente está en una captura de pantalla de un extracto de la salida del terminal después de ejecutar el código de High Sierra que figura en la respuesta de @ JBis: ingrese la descripción de la imagen aquí

Antonio23249
fuente

Respuestas:

12

Si va a la aplicación Consola en su Mac (se encuentra en la carpeta Aplicaciones / Utilidades) y hace clic en "Macs Analytics Data" que aparece en el lado izquierdo de la ventana. Este informe tiene un mensaje "loginwindow" y está marcado con una hora y tiene la palabra "screenlock" en la misma línea. Simplemente bloqueé y pantalla y luego lo desbloqueé y recibí ese mensaje. Puede seleccionar todos los términos de "ventana de inicio de sesión" y los términos de "bloqueo de pantalla". Esto debería darle una lista de las veces que ocurrieron estos eventos.

Este registro se puede ubicar con Finder haciendo clic con el botón derecho en él> mostrar en el buscador (al menos en macOS High Sierra)

jmh
fuente
1
¡Guauu! ese parece ser el indicado, pero parece mostrar solo los últimos 3 días, ¿hay alguna manera de ver más tiempo atrás?
Antonio23249
Eso no lo se. Lo siento.
jmh
Lo mejor que puedo decir es que mis mensajes retroceden 5 días. Parece que una búsqueda en "Lockscreen" es lo mejor.
jmh
Muchas gracias, ¿qué debo hacer para que recibas estas recompensas? ... nunca lo hice antes.
Antonio23249
En el trabajo, necesitamos obtener el último uso de cualquiera de los Mac que recibimos para reparación, esto puede ayudar mucho. Poder desbloquear el mac es un buen dato que el usuario estaba usando realmente la máquina.
Antonio23249
18

Parece que diferentes versiones de macOS usan diferentes registros para repetir esto. Ninguno de los cuales, he encontrado, muestra un registro diferente para un "inicio de sesión" o un "desbloqueo" . He respondido lo siguiente mejor: cómo encontrar todos los inicios de sesión / desbloqueos. Los siguientes comandos de terminal le mostrarán la fecha en la que ocurrió un inicio de sesión o desbloqueo.


Con la ayuda de esta respuesta, y pasando una hora revisando los registros, descubrí esto:

PD: También puede usar la --lastetiqueta útil para limitar a un tiempo específico en relación con ahora. Por ejemplo --last 5m, solo serían los últimos 5 minutos, --last 5hserían las últimas 5 horas y --last 5dserían los últimos 5 días.


macOS Mojave

Compruebe si hay intentos de desbloqueo bloqueados (contraseña no válida o Touch ID):

log show --style syslog --predicate 'process == "loginwindow"' --debug --info | grep "LUIAuthenticationServiceProvider activate]_block_invoke"

Explicación: El comando buscará en los registros y encontrará los que son del proceso "loginwindow"y contienen LUIAuthenticationServiceProvider activate]_block_invoke.


Compruebe si hay intentos de desbloqueo válidos (contraseña válida o Touch ID):

 log show --style syslog --predicate 'process == "loginwindow"' --debug --info | grep "LUIAuthenticationServiceProvider deactivateWithContext:]_block_invoke"

Explicación: El comando buscará en los registros y encontrará los que son del proceso "loginwindow"y contienen LUIAuthenticationServiceProvider deactivateWithContext:]_block_invoke.


macOS High Sierra

WIP

Compruebe si hay intentos de desbloqueo bloqueados (contraseña no válida o Touch ID):

...


Compruebe si hay intentos de desbloqueo válidos (contraseña válida o Touch ID):

log show --style syslog --predicate 'process == "loginwindow"' --debug --info | grep "LAClient evaluatePolicy:options:uiDelegate:reply:]_block_invoke"

macOS Sierra

Compruebe si hay intentos de desbloqueo bloqueados (contraseña no válida o Touch ID):

log show --style syslog --predicate 'process == "loginwindow"' --debug --info | grep "Verify password called with PAM auth set to YES, but pam handle == nil"

Compruebe si hay intentos de desbloqueo válidos (contraseña válida o Touch ID):

log show --style syslog --predicate 'process == "loginwindow"' --debug --info | grep "SecKeychainLogin result: 0, password was supplied"
JBis
fuente
Probé ambos y no me devuelven nada. Parece que estás dirigido en la dirección correcta. No estoy muy alfabetizado con Terminal, ¿qué buscan esos, el system.log ?, no pude encontrar ningún "UIAuthenticationServiceProvider deactivateWithContext:] _ block_invoke" en el system.log. Muchas gracias por tu esfuerzo, realmente necesito esto.
Antonio23249
@ Antonio23249 Ver actualización.
JBis
Hola, gracias de nuevo ... bueno, esto no parece estar funcionando, bloqueé y desbloqueé la pantalla a las 16:42:50 y luego reinicié la máquina y 16:06:10, esperé un par de minutos para dar el registra el tiempo para ponerse al día. De acuerdo con esto, el último desbloqueo fue el 2018-07-28 17: 13: 28.241846 + 0100 ¿verdad? Esta es una Mac Mini 2014 en macOS High Sierra 10.13.6
Antonio23249
Bueno, un inicio de sesión también puede activar este registro porque un inicio de sesión lo está desbloqueando. ¿El evento 16:42:50 incluso se mostró? Teóricamente debería ser el segundo.
JBis
Agregué una captura de pantalla del resultado a mi publicación original anterior (no pude agregarla en ningún otro lugar). Lo agregué nuevamente, la primera captura de pantalla que agregué no estaba bien
Antonio23249
1

MacOS Catalina tiene un formato de registro diferente al de Mojave. Basado en la respuesta de JBis , escribí un script para Catalina llamado lockunlock.sh

#!/bin/sh
PERIOD=1d
if [[ $# -ge 1 ]]; then
    PERIOD=$1
fi
echo "Times of Mac screen lock and unlock events in the past ${PERIOD}:"
SEARCH_FOR="going inactive, create activity semaphore|releasing the activity semaphore"
log show --style syslog --predicate 'process == "loginwindow"' --debug --info --last ${PERIOD} | grep -E "${SEARCH_FOR}" | cut -c '1-32 141-155'

Para llegar al término de búsqueda deseado, bloqueé y desbloqueé mi computadora para asegurarme de que hubiera eventos, luego vi el último minuto de registro con

log show --style syslog --predicate 'process == "loginwindow"' --debug --info --last 1m | less
Les Grieve
fuente
0

Esto le da los segundos desde el último desbloqueo / bloqueo:

function  getlastunlock-darwin() {
    date="$(log show --style syslog --predicate 'process == "loginwindow"' --debug --info --last 1d | command rg "going inactive, create activity semaphore|releasing the activity semaphore" | tail -n1 |cut -c 1-31)" fromnow
}
function fromnow() {
    python3 -c 'import datetime ; from dateutil.parser import parse ; import os
date = parse(os.environ["date"])
print((datetime.datetime.now(date.tzinfo) - date).total_seconds())'
}
Cara feliz
fuente
-1

Abrir terminal y escribir

last

esto debería proporcionar información de registro

Aquí está la página del manual de este comando:

último manual

Alexandre Babeanu
fuente
Gracias por su respuesta, ¿está seguro de que uno muestra desbloqueos de pantalla? parece mostrar solo inicios de sesión reales
Antonio23249
Tienes razón, @ Antonio23249. Un desbloqueo de pantalla no es un nuevo inicio de sesión. lastsolo muestra los últimos inicios de sesión. Desde man last: Último enumerará las sesiones de usuarios, ttys y hosts especificados, en orden de tiempo inverso. Cada línea de salida contiene el nombre de usuario, el tty desde el que se realizó la sesión, cualquier nombre de host, las horas de inicio y finalización de la sesión y la duración de la sesión. Si la sesión aún continúa o fue interrumpida por un bloqueo o apagado, el último lo indicará.
IconDaemon
Gracias por su respuesta de todos modos, he comenzado una recompensa por ello. Supongo que esto debe ser posible porque, cuando usas controles parentales y configuras un límite de tiempo para un usuario, si el usuario bloquea la pantalla, el tiempo en la pantalla de bloqueo no parece contar con el tiempo permitido, que parece ¿implica que las pantallas de bloqueo están registradas en algún archivo de registro?
Antonio23249