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


21

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

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

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

Ответы:


12

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

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


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"

Я попробовал оба, и они ничего не возвращают. Вы, кажется, нацелены в правильном направлении. Я не очень хорошо разбираюсь в терминале, что делают эти поиски, 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

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,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.