Budzenie wyświetlacza z terminala, ogólne budzenie

20

To dwuczęściowe pytanie. Najpierw praktyczne pytanie „jak to zrobić”, a następnie proszę o sugestie dotyczące konfiguracji.

Po pierwsze, kładę ekrany do spania w nocy i chciałbym móc zdalnie obudzić wyświetlacz. Czy istnieje narzędzie wiersza polecenia, którego można użyć do obudzenia go przez SSH? Wiem o WakeOnLan, ale wydaje się, że to przesada.

Po drugie, cały powód, dla którego chcę zdalnie budzić wyświetlacz, ma związek ze zmianami ustawień oszczędzania energii Lion. Pilot na podczerwień Apple nie budzi już wyświetlacza. To wielka sprawa dla maszyny, którą pierwotnie kupiłem, aby być połączonym komputerem stacjonarnym / kina domowego, ponieważ pokonuje połowę swojego celu. Czy ktoś ma jakieś pomysły / sugestie, co z tym zrobić? To jest otwarte, wiem.

zaraz
źródło

Odpowiedzi:

25

Najłatwiejszym sposobem, aby to zrobić za pośrednictwem SSH, jest użycie caffeinate -u(dostępne od OS X 10.9) do symulacji aktywności użytkownika.

Dodaj flagę, -t 5aby określić limit czasu wynoszący 5 sekund ( wydaje się , że musiałbyś ctrl+ czrezygnować z kofeiny).

Asmus
źródło
1
tam pojawia się (+) za odpowiedź, na którą nikt nie zwracał uwagi. Mam tak wielu z siebie, gdzie ppl przychodzi zadać nowe pytanie, aby wrócić i sprawdzić odpowiedź.
Ruskes
1
Według strony podręcznika (w High Sierra), 5 sekund jest defaul dla -uopcji: Jeśli limit czasu nie jest określony z opcją -t, to twierdzenie jest przyjmowane z domyślnym
limitem
9

Możesz użyć

pmset schedule wake "01/01/2012 20:00:00"

aby obudzić uśpiony ekran na Macu „budzącym się inaczej”. Zastąp część data / czas bieżącą godziną oczywiście.

wuc
źródło
9

Budzić: caffeinate -u -t 2

Spać: pmset displaysleepnow

Dermot
źródło
Fajne rozwiązanie! Nigdy nie używałem go caffeinatedo włączania wyświetlacza, ale chyba działa.
JMY1000
7

Budzenie wyświetlacza z wiersza poleceń

Aby zdalnie wybudzić monitor, spróbuj uruchomić AppleScript w wierszu poleceń:

osascript -e 'tell application "System Events" to key code 123'

To symuluje naciśnięcie klawisza kursora i powinno sprawić, że Mac OS X 10 będzie wierzył, że użytkownik jest aktywny na komputerze.

Ten AppleScript opiera się na odpowiedzi: Jak zautomatyzować naciskanie klawiszy w AppleScript?

Budzenie wyświetlacza po wybudzeniu za pomocą pilota

Jeśli budzisz komputer Mac za pomocą pilota, a wyświetlacz nie włącza się, spróbuj Wake Assist . Nie jest przeznaczony do tej sytuacji, ale może po prostu działać.

Wake Assist symuluje kliknięcie myszą po przebudzeniu komputera Mac. Mysz kliknięto dwukrotnie w lewym górnym rogu głównego ekranu. Funkcja Wake Assist nic nie zrobi, jeśli wykryje użytkownika, ale jeśli komputer się obudzi i będzie bezczynny, kliknie się mysz.

Graham Miln
źródło
1
Sprawa AppleScript nie działała dla mnie. Czarny obraz pojawia się screencapturenawet po kilku minutach.
lhf
Czy próbowałeś już innego symulowanego naciśnięcia klawisza - może to nie wystarczy klawisz kursora? Czy potrzebujesz hasła po przebudzeniu?
Graham Miln,
1
Działa dobrze dla mnie w systemie OS X 10.6
claytron
3

wuc napisał:

Możesz użyć

pmset schedule wake "01/01/2012 20:00:00"

aby obudzić uśpiony ekran na Macu „budzącym się inaczej”. Zastąp część data / czas bieżącą godziną oczywiście.

Nie działało to jednak dla mnie na komputerze iMac z 2008 r. I wersji 10.9.1 lub MacBooku Air z 2010 r. I wersji 10.9.2. Nie jestem pewien, czy ma to coś wspólnego z zarządzaniem energią Mavericks, sprzętem, czy co.

Udało mi się go uruchomić, ustawiając czas budzenia na 15 sekund w przyszłość. Czasami mogłem sprawić, aby działał z ustawieniem tak niskim jak 12 lub 13, ale nie niezawodnie. Ale mogły istnieć inne czynniki, o których wtedy nie zdawałem sobie sprawy, ale 15 zadziałało, więc użyłem 15.

Ale jak obliczyć programowo 15 sekund w przyszłość?

Użyłem gdatez pakietu GNU Coreutils ( datew OS X może to zrobić, ale jeśli to możliwe, nie wiem jak i już gdatezainstalowałem):

[używać datezamiast gdateużywać aliasu set_wake_time = 'date' -v + $ {OFFSET} S "" +% D% T "']

Oto skrypt, którego użyłem:

#!/bin/zsh -f

# how many seconds into the future we want to wake the display
# 15 seems to work reliably. YMMV.
OFFSET=15

# to calculate the time, we need `gdate`
alias set_wake_time='/usr/local/bin/gdate --date "+${OFFSET} sec" "+%m/%d/%g %H:%M:%S"'

# this is where we set the wake command
# if it doesn't succeed the script will exit immediately
/usr/bin/sudo /usr/bin/pmset schedule wake "`set_wake_time`" || exit 1

# if you were not testing this, you'd probably want to end at the
# next line. Just remove the leading '#'
#exit 0
#######################################################

### Everything below this line is only needed during testing ###

# this tells the display to sleep
# because we can test waking the screen up unless it's asleep
pmset displaysleepnow

# for testing purposes: now the script will pause for $OFFSET seconds
sleep $OFFSET

# For testing purposes:
# after $OFFSET seconds, this sound will play 3 times.
# by that time, the display should be awake
# I did this to help me know when I had set OFFSET too low

afplay /System/Library/Sounds/Glass.aiff

afplay /System/Library/Sounds/Glass.aiff

afplay /System/Library/Sounds/Glass.aiff

# script is done
exit 0

Wszystko po „#################################################################### ######### 'można usunąć po zakończeniu testowania.

TJ Luoma
źródło
date -jv+15Swykona sztuczkę obliczania daty za 15 sekund w przyszłości. -jPrzełącznik zapobiega datepróbom ustawić zegar systemowy.
Mike
1
Polecenie date -jv+15S "+%m/%d/%Y %H:%M:%S"umieści 15 sekund w przyszłości we właściwym formacie pmset.
Aaron D
Zgodnie ze stroną podręcznika pmset OSX 10.10.3, istnieje również opcja „względnego budzenia sekund pmset”. Warto też to zbadać.
JS.
1

Och, jak żałuję, że nie mam wystarczającej liczby przedstawicieli, aby głosować na odpowiedź @ wuc 10 razy, na jaką zasługuje na ten irytująco frustrujący problem (lub przynajmniej móc zostawić prosty komentarz z pochwałą, na którą zasługuje).

Apple, w swojej paternalistycznej mądrości, dodało „funkcję”, która celowo utrudniała wybudzenie ekranu Lion i Mountain Lion. Utrudniło to życie tym, którzy chcą zdalnie obudzić wyświetlacz (za pomocą pilotów IR lub VNC) w celu interakcji z komputerami Mac. Z jakiegoś powodu stało się to bardziej widoczne w OS X 10.8.2 .

Korzystanie pmsetbyło dla mnie cudownym obejściem.

Krok 1: Zaloguj się do zdalnego komputera za pomocą ssh [email protected](zastąp odpowiednią nazwę użytkownika i ip dla zdalnego komputera Mac).

Krok 2: Obudź wyświetlacz za pomocą pmset schedule wake "06/27/2013 04:20:00"(z odpowiednią przyszłą datą, którą wybierzesz).

D. Woods
źródło
W pewnym sensie zgadzam się i lubię czytać twoją odpowiedź, ale być może rozważam apple.stackexchange.com/help/how-to-answer .
DA Vincent
0

Opcja, jeśli nie chcesz używać gdate:

  • Włącz SSHD (zdalne logowanie) w Preferencjach systemowych, Udostępnianie
  • Włącz „Obudź w celu uzyskania dostępu do sieci” w Preferencjach systemowych, Oszczędzanie energii

umieść ten kod w pliku takim jak „wakeup.sh” w folderze domowym:

shopt -s expand_aliases
#NB: 7 is the waiting interval. Works for me. Increase as needed. 
alias myDate='date -v+7S "+%m/%d/%Y %H:%M:%S"'
echo MacBook will wake up at: `myDate`
echo yourMacPW | sudo -S pmset schedule wake "`myDate`"
  • Ustaw go jako „chmod + x wakeup.sh” i wpisz swoje hasło, jeśli chcesz. W przeciwnym razie upuść echo i -S.

Jeśli chcesz zautomatyzować ten proces do pracy z komputera z systemem Windows:

  • Pobierz PuTTY i narzędzie WakeOnLan z wiersza poleceń (tj. Aquila na SourceForge)
  • Utwórz jednowierszowy plik tekstowy zawierający „./wakeup.sh”
  • napisz taki plik wsadowy:

    @echo off
    c:
    cd "C:\Program Files (x86)\Aquila Technology\WakeOnLAN"
    :tryAgain
    wakeonlanc.exe -w -mac 00:00:00:00:00:00
    ping 192.168.1.101 -n 1 | find "unreachable"
    if %ERRORLEVEL% EQU 0 GOTO tryAgain
    cd C:\putty
    putty.exe -ssh 192.168.1.101 -l yourUser -pw yourMacPW -m c:\putty\macWake.txt

Rzeczy, które musisz zmienić: Twój adres IP, adres MAC, słowo „nieosiągalny” może nie być tym, co dostajesz - możesz zostać przekroczony limit czasu. Przechowywanie hasła roota w postaci zwykłego tekstu nie jest oczywiście dobrym pomysłem, ale jak to zrobić całkowicie automatycznie z systemu Windows na OSX.

dobrze wypowiadający się
źródło