37 votes

Y a-t-il un moyen d'obtenir les dernières fois où l'écran a été déverrouillé dans MacOS ?

Je serais immensément reconnaissant si quelqu'un m'aidait à obtenir le déverrouillage du dernier écran (par exemple en allant dans le menu Apple > écran de verrouillage). Par déverrouillage, j'entends le fait de verrouiller l'écran puis de devoir le déverrouiller en entrant le mot de passe. Je suppose que cela est enregistré dans un fichier journal ou qu'il y a une commande Terminal pour l'obtenir.

Je suppose que cela doit être possible car, lorsque vous utilisez le contrôle parental et que vous définissez une limite de temps pour un utilisateur, si l'utilisateur verrouille l'écran, le temps passé sur l'écran verrouillé ne semble pas compter dans le temps autorisé, ce qui semble impliquer que les écrans verrouillés sont enregistrés dans un fichier journal ?

Ce qui suit est une capture d'écran d'un extrait de la sortie du terminal après avoir exécuté le code High Sierra indiqué dans la réponse de @JBis : enter image description here

30voto

Pirooz Points 486

Il semble que les différentes versions de MacOS utilisent différents journaux pour représenter ce phénomène. Je n'en ai trouvé aucun, afficher un journal différent pour une "connexion" ou un "déverrouillage". . J'ai répondu à la question suivante : comment trouver tous les logins/déverrouillages. Les commandes de terminal suivantes vous montreront la date et l'heure auxquelles une connexion ou un déverrouillage a eu lieu.


Avec l'aide de ce et après avoir passé une heure à consulter les journaux, j'ai trouvé la solution :

P.S. Vous pouvez également utiliser l'outil utile --last pour limiter à un moment spécifique par rapport à maintenant. Par exemple --last 5m ne serait que les 5 dernières minutes, --last 5h serait les 5 dernières heures, et --last 5d serait les 5 derniers jours.


MacOS Mojave

Vérifiez si les tentatives de déverrouillage ont été bloquées (mot de passe ou Touch ID invalides) :

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

Explication : La commande va parcourir les journaux et trouver ceux qui sont issus du processus "loginwindow" et contiennent LUIAuthenticationServiceProvider activate]_block_invoke .


Vérifiez les tentatives de déverrouillage valides (mot de passe valide ou Touch ID) :

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

Explication : La commande va parcourir les journaux et trouver ceux qui sont issus du processus "loginwindow" et contiennent LUIAuthenticationServiceProvider deactivateWithContext:]_block_invoke .


MacOS High Sierra

WIP

Vérifiez si les tentatives de déverrouillage ont été bloquées (mot de passe ou Touch ID invalides) :

...


Vérifiez les tentatives de déverrouillage valides (mot de passe valide ou Touch ID) :

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

MacOS Sierra

Vérifiez si les tentatives de déverrouillage ont été bloquées (mot de passe ou Touch ID invalides) :

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

Vérifiez les tentatives de déverrouillage valides (mot de passe valide ou Touch ID) :

log show --style syslog --predicate 'process == "loginwindow"' --debug --info | grep "SecKeychainLogin result: 0, password was supplied"

22voto

Natsfan Points 12853

Si vous allez dans l'application Console sur votre Mac (elle est située dans le dossier Applications/Utilitaires) et cliquez sur "Macs Analytics Data" qui apparaît sur le côté gauche de la fenêtre. Ce rapport contient un message "loginwindow", est horodaté et contient le mot "screenlock" sur la même ligne. J'ai verrouillé mon écran, puis je l'ai déverrouillé et j'ai obtenu ce message. Vous pourriez extraire par grep tous les termes "loginwindow" et les termes "screenlock". Cela devrait vous donner une liste des moments où ces événements se sont produits.

Ce journal peut être localisé avec le Finder en faisant un clic droit dessus > reveal in finder (au moins sous MacOS High Sierra).

5voto

hatboysam Points 1191

MacOS Catalina a un format de journal différent de celui de Mojave. Basé sur le réponse de JBis J'ai écrit un script pour Catalina appelé 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'

Pour arriver au terme de recherche souhaité, j'ai verrouillé et déverrouillé mon ordinateur pour m'assurer qu'il y avait des événements, puis j'ai consulté la dernière minute du journal avec

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

2voto

alanng Points 21

En Catalina, la solution à laquelle je suis finalement arrivé est la suivante :

  1. Terminal ouvert
    • Si vous n'êtes pas connecté en tant qu'administrateur, utilisez alors su username pour s'authentifier d'abord en tant qu'administrateur "nom d'utilisateur". J'utilise ceci parce que je vérifie l'historique de connexion de mon enfant sur son Mac sans avoir à le déconnecter et à perturber ses affaires.
  2. log show --last 1d | grep "UserActivity Assertion"
    • Si vous voulez voir plus ou moins d'historique dans le temps, changez le "1d" en "2h" ou "10m" (voir documentation en exécutant man log ).
    • Si vous omettez le --last le temps d'exécution sera très long, peut-être plus de 10 minutes.

Cela semble indiquer de manière fiable chaque fois que la machine a été réveillée du sommeil par l'utilisateur déverrouillant l'écran de verrouillage avec son mot de passe.

0voto

HappyFace Points 433

Cela vous donne les secondes écoulées depuis le dernier déverrouillage/verrouillage :

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())'
}

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X