Будь-який спосіб отримати останній раз, коли екран був розблокований у macOS?


21

Я буду дуже вдячний, якби хтось допоміг мені розблокувати останній екран (наприклад, перейшовши до меню Apple> блокування екрана). Під розблокуванням я маю на увазі, коли ви блокуєте екран, тоді вам доведеться розблокувати його, ввівши пароль. Я думаю, це зареєстровано в якомусь файлі журналу або є якась команда Terminal, щоб отримати це.

Я думаю, що це повинно бути можливим, оскільки, коли ви використовуєте батьківський контроль і встановлюєте обмеження часу для користувача, якщо користувач блокує екран, час на заблокованому екрані, здається, не враховується дозволеного часу, який, здається, мається на увазі, що блоковані екрани зареєстровані в якомусь файлі журналу ??

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

Відповіді:


12

Якщо ви перейдете до програми "Консоль" на вашому Mac (він знаходиться в папці "Програми / утиліти") і натисніть "Дані аналітики Mac", що з’являється в лівій частині вікна. У цьому звіті є повідомлення "вікно входу" та позначено печаткою часу та в тому ж рядку є слово "скрінблок". Я просто заблокував екран і потім розблокував його, і я отримав це повідомлення. Ви можете викривити всі терміни "вікно входу" та умови "скрінблок". Це має дати вам список випадків, коли ці події траплялися.

Цей журнал може бути розміщений у програмі Finder, клацнувши правою кнопкою миші> виявити у Finder (принаймні, у macOS High Sierra)


1
Оце Так! це здається одним, але це, здається, показує лише останні 3 дні, чи є спосіб побачити більше часу назад?
Antonio23249

Що я не знаю. Вибачте.
jmh

Найкраще, що я можу сказати, що мої повідомлення тривають 5 днів. Схоже, пошук на "Lockscreen" найкращий.
jmh

Велике спасибі, що я повинен зробити, щоб ви отримали цей заряд? .. всякий раз, коли це робилося раніше.
Antonio23249

На роботі нам потрібно отримати останнє використання для будь-якого з комп’ютерів, які ми отримуємо на ремонт, це може дуже допомогти. Можливість розблокувати Mac - це хороший фрагмент даних, який користувач насправді використовував апарат.
Antonio23249

18

Здається, різні версії macOS використовують різні журнали, щоб представити це. Жоден з яких, як я виявив, не показує інший журнал для "входу" або "розблокування" . Я відповів на наступне найкраще: Як знайти всі входи / розблокування. Наступні команди терміналів покажуть вам дату, у який час відбувся вхід або розблокування.


За допомогою цієї відповіді і витративши годину на перегляд журналів, я зрозумів це:

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


macOS Mojave

Перевірте наявність заблокованих спроб розблокування (Недійсний пароль або 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 Висока Сьєрра

ВІП

Перевірте наявність заблокованих спроб розблокування (Недійсний пароль або 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 деактиваціяWithContext:] _ 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

Я додав знімок екрана до своєї початкової публікації вище (я не міг додати його більше ніде). Я додав його ще раз, перший скріншот, який я додав, був
невірний

2

MacOS Catalina має формат журналу, відмінний від Mojave. На підставі відповіді від 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показує лише останні входи. Від man last: Останній буде перераховувати сеанси вказаних користувачів, ttys та хостів у зворотному часовому порядку. Кожен рядок виводу містить ім’я користувача, tty, з якого проводився сеанс, будь-яке ім'я хоста, час початку та зупинки сеансу та тривалість сеансу. Якщо сеанс все ще триває або був перерваний аварією або відключенням, останнє це вказуватиме.
IconDaemon

Дякую за вашу відповідь, я все-таки розпочав щедрості. Я думаю, що це повинно бути можливим, оскільки, коли ви використовуєте батьківський контроль і встановлюєте обмеження часу для користувача, якщо користувач блокує екран, час на заблокованому екрані, здається, не враховується дозволеного часу, який, здається, мається на увазі, що блоковані екрани зареєстровані в якомусь файлі журналу ??
Antonio23249
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.