Czy jest jakiś sposób, aby ostatni raz ekran został odblokowany w systemie macOS?


21

Byłbym niezmiernie wdzięczny, gdyby ktoś pomógł mi odblokować ostatni ekran (na przykład przechodząc do menu Apple> ekran blokady). Z odblokowaniem mam na myśli, że kiedy blokujesz ekran, musisz go odblokować, wprowadzając hasło. Wydaje mi się, że jest to zarejestrowane w jakimś pliku dziennika lub istnieje polecenie terminalu, aby to uzyskać.

Myślę, że musi to być możliwe, ponieważ kiedy korzystasz z kontroli rodzicielskiej i ustawiasz limit czasowy dla użytkownika, jeśli użytkownik zablokuje ekran, czas na ekranie blokady wydaje się nie wliczać do dozwolonego czasu, który wydaje się sugerować, że ekrany blokady są zarejestrowane w pliku dziennika?

Poniżej znajduje się zrzut ekranu fragmentu wyjścia terminala po uruchomieniu kodu High Sierra wymienionego w odpowiedzi @ JBis: wprowadź opis zdjęcia tutaj

Odpowiedzi:


12

Jeśli przejdziesz do aplikacji konsoli na komputerze Mac (znajduje się ona w folderze Aplikacje / Narzędzia) i klikniesz „Macs Analytics Data”, która pojawi się po lewej stronie okna. Ten raport ma komunikat „loginwindow” i jest opatrzony czasem i ma słowo „screenlock” w tej samej linii. Właśnie zamknąłem ekran, a następnie odblokowałem i dostałem ten komunikat. Możesz wymieniać wszystkie warunki „loginwindow” i warunki „screenlock”. Powinno to dać Ci listę przypadków, w których te zdarzenia miały miejsce.

Ten dziennik można zlokalizować za pomocą Findera, klikając go prawym przyciskiem myszy> pokaż w wyszukiwarce (przynajmniej w systemie macOS High Sierra)


1
Łał! wydaje się, że to jeden, ale wydaje się, że pokazuje tylko ostatnie 3 dni, czy jest sposób, aby zobaczyć więcej czasu?
Antonio23249

Tego nie wiem. Przepraszam.
jmh

Najlepsze, co mogę powiedzieć, że moje wiadomości cofną się o 5 dni. Wygląda na to, że wyszukiwanie w „Lockscreen” jest najlepsze.
jmh

Wielkie dzięki, co powinienem zrobić, aby otrzymać te nagrody? .. nigdy wcześniej tego nie robiłem.
Antonio23249

W pracy musimy uzyskać ostatnie użycie dowolnego Maca, który otrzymamy do naprawy, może to bardzo pomóc. Możliwość odblokowania Maca to dobra informacja, że ​​użytkownik faktycznie korzystał z urządzenia.
Antonio23249

18

Wygląda na to, że różne wersje systemu macOS używają różnych dzienników, aby to reprezentować. Żadne z nich, jak znalazłem, nie pokazuje innego dziennika dla „logowania” lub „odblokowania” . Odpowiedziałem na następną najlepszą rzecz: Jak znaleźć wszystkie loginy / odblokowania. Następujące polecenia terminala pokażą datę, kiedy nastąpiło logowanie lub odblokowanie.


Z pomocą tej odpowiedzi i spędzając godzinę przeglądając logi, wymyśliłem to:

PS Możesz dodatkowo użyć pomocnego --lastznacznika, aby ograniczyć czas do określonego czasu. Na przykład --last 5mbyłyby to tylko ostatnie 5 minut, --last 5hostatnie 5 godzin i --last 5dostatnie 5 dni.


macOS Mojave

Sprawdź, czy nie ma zablokowanych prób odblokowania (nieprawidłowe hasło lub identyfikator dotykowy):

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

Objaśnienie: Polecenie przejrzy dzienniki i znajdzie te, które pochodzą z procesu "loginwindow"i zawierają LUIAuthenticationServiceProvider activate]_block_invoke.


Sprawdź prawidłowe próby odblokowania (prawidłowe hasło lub identyfikator Touch ID):

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

Objaśnienie: Polecenie przejrzy dzienniki i znajdzie te, które pochodzą z procesu "loginwindow"i zawierają LUIAuthenticationServiceProvider deactivateWithContext:]_block_invoke.


macOS High Sierra

WIP

Sprawdź, czy nie ma zablokowanych prób odblokowania (nieprawidłowe hasło lub identyfikator dotykowy):

...


Sprawdź prawidłowe próby odblokowania (prawidłowe hasło lub identyfikator Touch ID):

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

macOS Sierra

Sprawdź, czy nie ma zablokowanych prób odblokowania (nieprawidłowe hasło lub identyfikator dotykowy):

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

Sprawdź prawidłowe próby odblokowania (prawidłowe hasło lub identyfikator Touch ID):

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

Próbowałem obu i nic nie zwracają. Wydaje się, że celujesz we właściwym kierunku. Nie znam się zbyt dobrze na terminalu, co szukają, system.log ?, nie mogłem znaleźć żadnego „UIAuthenticationServiceProvider dezaktywowaćWithContext:] _ block_invoke” w system.log. Bardzo dziękuję za twój wysiłek, naprawdę tego potrzebuję.
Antonio23249

@ Antonio23249 Zobacz aktualizację.
JBis

Cześć, jeszcze raz dziękuję… cóż, to nie działa, zablokowałem, a następnie odblokowałem ekran o 16:42:50, a następnie ponownie uruchomiłem maszynę i 16:06:10, czekałem kilka minut, aby dać rejestruje czas do nadrobienia. Zgodnie z tym ostatnie odblokowanie miało miejsce w dniu 2018-07-28 17: 13: 28.241846 + 0100, prawda? To jest Mac Mini 2014 na macOS High Sierra 10.13.6
Antonio23249

Cóż, logowanie może również wyzwalać ten dziennik, ponieważ logowanie go dobrze odblokowuje. Czy wydarzenie 16:42:50 w ogóle pokazało? Teoretycznie powinien to być drugi.
JBis

Dodałem zrzut ekranu wyniku do mojego oryginalnego postu powyżej (nie mogłem go dodać nigdzie indziej). Dodałem go ponownie, pierwszy zrzut ekranu, który dodałem, był nieprawidłowy
Antonio23249

2

MacOS Catalina ma inny format dziennika niż Mojave. W oparciu o odpowiedzi od JBis , napisałem skrypt o nazwie 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'

Aby dotrzeć do poszukiwanego terminu, zablokowałem i odblokowałem komputer, aby upewnić się, że wystąpiły zdarzenia, a następnie przeglądałem ostatnią minutę dziennika

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

0

Daje to sekundy od ostatniego odblokowania / blokady:

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

Otwórz terminal i wpisz

last

powinno to dostarczyć informacji dziennika

oto strona instrukcji tego polecenia:

ostatnia instrukcja


Dzięki za odpowiedź, czy jesteś pewien, że jeden pokazuje odblokowanie ekranu? wydaje się, że pokazuje tylko rzeczywiste logowanie
Antonio23249,

Masz rację, @ ​​Antonio23249. Odblokowanie ekranu nie jest nowym loginem. lastpokazuje tylko ostatnie logowanie. Od man last: Ostatni wyświetli listę sesji określonych użytkowników, tty i hostów, w odwrotnej kolejności. Każdy wiersz wyniku zawiera nazwę użytkownika, tty, z którego przeprowadzono sesję, dowolną nazwę hosta, czasy rozpoczęcia i zakończenia sesji oraz czas trwania sesji. Jeśli sesja nadal trwa lub została przerwana przez awarię lub zamknięcie, ostatnia będzie to oznaczać.
IconDaemon

W każdym razie dziękuję za odpowiedź. Zacząłem za to nagrodę. Myślę, że musi to być możliwe, ponieważ kiedy korzystasz z kontroli rodzicielskiej i ustawiasz limit czasowy dla użytkownika, jeśli użytkownik zablokuje ekran, czas na ekranie blokady wydaje się nie wliczać do dozwolonego czasu, który wydaje się sugerować, że ekrany blokady są zarejestrowane w pliku dziennika?
Antonio23249
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.