Есть ли способ получить последний раз, когда экран был разблокирован в macOS?

21

Я был бы очень благодарен, если бы кто-нибудь помог мне получить последние разблокировки экрана (например, перейдя в меню Apple> экран блокировки). Под разблокировкой я подразумеваю, когда вы блокируете экран, вы должны разблокировать его, введя пароль. Я предполагаю, что это зарегистрировано в некотором файле журнала или есть некоторая команда Терминала, чтобы получить это.

Я предполагаю, что это должно быть возможно, потому что, когда вы используете родительский контроль и устанавливаете ограничение по времени для пользователя, если пользователь блокирует экран, время на экране блокировки, кажется, не считается с разрешенным временем, которое, кажется, подразумевать, что блокировка экранов прописана в каком-то лог-файле ??

Ниже приведен скриншот отрывка из вывода терминала после выполнения кода High Sierra, указанного в ответе @ JBis: введите описание изображения здесь

Antonio23249
источник

Ответы:

12

Если вы зайдете в консольное приложение на вашем Mac (оно находится в папке «Программы / Утилиты») и щелкните «Данные Macs Analytics», которое появится в левой части окна. В этом отчете есть сообщение «loginwindow», в нем есть отметка времени и слово «screenlock» в той же строке. Я просто заблокировал экран и затем разблокировал его, и я получил это сообщение. Вы можете отключить все термины «loginwindow» и «screenlock». Это должно дать вам список случаев, когда происходили эти события.

Этот журнал можно найти с помощью Finder, щелкнув его правой кнопкой мыши> открыть в Finder (по крайней мере, в MacOS High Sierra)

JMH
источник
1
Вот Это Да! кажется, что это один, но он показывает только последние 3 дня, есть ли способ увидеть больше времени назад?
Antonio23249,
Это я не знаю. Сожалею.
JMH
Насколько я могу судить, мои сообщения возвращаются на 5 дней назад. Похоже, что поиск по "Lockscreen" лучше.
JMH
Большое спасибо, что я должен сделать, чтобы вы получили эту награду? .. никогда не делал это раньше.
Antonio23249
На работе нам нужно получить последнее использование для любого из маков, которые мы получаем для ремонта, это может очень помочь. Возможность разблокировать Mac - это хорошая информация, которую пользователь фактически использовал на машине.
Антонио23249,
18

Похоже, разные версии macOS используют разные журналы, чтобы представить это. Ни один из которых, как я обнаружил, не показывает другой журнал для «логина» или «разблокировки» . Я ответил на следующую лучшую вещь: Как найти все логины / разблокировки. Следующие команды терминала покажут вам дату и время, когда произошла авторизация или разблокировка.


С помощью этого ответа и потратив час на просмотр логов, я понял это:

PS Вы можете дополнительно использовать полезный --lastтег, чтобы ограничить определенное время относительно текущего времени. Например, это --last 5mбудут только последние 5 минут, --last 5hпоследние 5 часов и --last 5dпоследние 5 дней.


macOS Мохаве

Проверьте заблокированные попытки разблокировки (Неверный пароль или Touch ID):

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

Объяснение: Команда просматривает журналы и находит те, которые находятся в процессе "loginwindow"и содержат LUIAuthenticationServiceProvider activate]_block_invoke.


Проверьте правильность попыток разблокировки (действительный пароль или Touch ID):

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

Объяснение: Команда просматривает журналы и находит те, которые находятся в процессе "loginwindow"и содержат LUIAuthenticationServiceProvider deactivateWithContext:]_block_invoke.


macOS High Sierra

WIP

Проверьте заблокированные попытки разблокировки (Неверный пароль или Touch ID):

...


Проверьте правильность попыток разблокировки (действительный пароль или Touch ID):

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

macOS Сьерра

Проверьте заблокированные попытки разблокировки (Неверный пароль или 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"

Проверьте правильность попыток разблокировки (действительный пароль или Touch ID):

log show --style syslog --predicate 'process == "loginwindow"' --debug --info | grep "SecKeychainLogin result: 0, password was supplied"
JBIS
источник
Я попробовал оба, и они ничего не возвращают. Вы, кажется, нацелены в правильном направлении. Я не очень хорошо разбираюсь в терминале, что делают эти поиски, system.log ?, я не смог найти никакого "UIAuthenticationServiceProvider deactivateWithContext:] _ block_invoke" в system.log. Большое спасибо за ваши усилия, мне это действительно нужно.
Antonio23249
@ Antonio23249 Смотрите обновление.
JBis
Привет, спасибо еще раз… ну, это, кажется, не работает, я заблокировал, затем разблокировал экран в 16:42:50, затем перезапустил машину и 16:06:10, я ждал пару минут, чтобы дать Логи время, чтобы наверстать упущенное. В соответствии с этим последняя разблокировка была на 2018-07-28 17: 13: 28.241846 + 0100 правильно? Это Mac Mini 2014 на MacOS High Sierra 10.13.6
Antonio23249
Ну, логин может также вызвать этот журнал, потому что логин хорошо его разблокирует. Событие 16:42:50 вообще показывалось? Теоретически это должен быть второй.
JBis
Я добавил скриншот с результатом в свой оригинальный пост выше (я не мог добавить его нигде). Я добавил это снова, первый скриншот, который я добавил, был неправильным
Antonio23249
1

MacOS Catalina имеет формат журнала, отличный от Мохаве. На основании ответа от JBIS , я написал сценарий для Catalina называется 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'

Чтобы найти нужный критерий поиска, я заблокировал и разблокировал свой компьютер, чтобы убедиться, что произошли события, а затем просмотрел последнюю минуту журнала с

log show --style syslog --predicate 'process == "loginwindow"' --debug --info --last 1m | less
Les Grieve
источник
0

Это дает вам секунды с момента последней разблокировки / блокировки:

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())'
}
Счастливое лицо
источник
-1

Откройте терминал и введите

last

это должно предоставить информацию журнала

вот страница руководства этой команды:

последнее руководство

Александр Бабеану
источник
Спасибо за ваш ответ, вы уверены, что один показывает разблокировки экрана? похоже, что он показывает только реальные входы в систему
Antonio23249
Вы правы, @ Antonio23249. Разблокировка экрана не является новым логином. lastпоказывает только последние логины. From man last: Last перечислит сеансы указанных пользователей, ttys и hosts в обратном порядке времени. Каждая строка вывода содержит имя пользователя, tty, с которого был проведен сеанс, любое имя хоста, время начала и окончания сеанса, а также продолжительность сеанса. Если сеанс все еще продолжается или был прерван в результате сбоя или завершения работы, это будет указано последним.
IconDaemon
В любом случае, спасибо за ваш ответ, я получил награду за это. Я предполагаю, что это должно быть возможно, потому что, когда вы используете родительский контроль и устанавливаете ограничение по времени для пользователя, если пользователь блокирует экран, время на экране блокировки, кажется, не считается с разрешенным временем, которое, кажется, подразумевать, что блокировка экранов зарегистрирована в каком-то файле журнала ??
Antonio23249,