Visualizzazione sveglia dal terminale, sveglia generale


20

Questa è una domanda in due parti. Una domanda pratica "come fare" è prima di tutto, quindi chiedo suggerimenti di configurazione.

Innanzitutto, di notte metto in pausa i miei schermi e vorrei poterlo riattivare da remoto. Esiste un'utilità della riga di comando che posso usare per riattivarla tramite SSH? Conosco WakeOnLan, ma sembra eccessivo.

In secondo luogo, l'intera ragione per cui voglio riattivare il mio display da remoto ha a che fare con il modo in cui le impostazioni di risparmio energetico di Lion sono cambiate. Il telecomando a infrarossi Apple non attiva più il display. Questo è un grosso problema per una macchina che inizialmente ho acquistato per essere un PC desktop / home theater combinato, poiché vanifica metà del suo scopo. Quindi, qualcuno ha idee / suggerimenti su cosa fare al riguardo? Questo è a tempo indeterminato, lo so.

Risposte:


25

Il modo più semplice per farlo su SSH è usare caffeinate -u(disponibile da OS X 10.9 credo) per simulare l'attività dell'utente.

Aggiungi la bandiera -t 5per specificare un timeout di 5 secondi (altrimenti dovresti ctrl+ cfuori dal caffeinato, a quanto pare).


1
ecco una (+) per la tua risposta a cui nessuno ha prestato attenzione. Ne ho così tanti di me stesso, in cui ppl vieni a fare una domanda più recente per tornare a cercare una risposta.
Ruskes,

1
Secondo la pagina man (in High Sierra), il 5 sec è -uun'opzione predefinita : se un timeout non è specificato con l'opzione '-t', questa affermazione viene presa con un valore predefinito di 5 secondi timeout
JJarava

9

Puoi usare

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

per riattivare uno schermo per dormire su un Mac altrimenti "sveglio". Sostituisci la parte data / ora con l'ora corrente ovviamente.


9

Wake: caffeinate -u -t 2

Dormire: pmset displaysleepnow


Bella soluzione! Mai pensato di usare caffeinateper accendere il display, ma suppongo che funzioni.
JMY1000,

7

Riattivazione del display dalla riga di comando

Per riattivare lo schermo in remoto, prova a eseguire un AppleScript dalla riga di comando:

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

Questo simulerà premendo il tasto cursore e dovrebbe far credere a Mac OS X 10 che un utente sia attivo sul computer.

Questo AppleScript si basa sulla risposta: Come automatizzare la pressione di un tasto in AppleScript?

Riattivazione del display dopo la sveglia con il telecomando

Se stai riattivando il Mac tramite il telecomando e il display non si accende, prova Wake Assist . Non è progettato per questa situazione ma potrebbe funzionare.

Wake Assist simula un clic del mouse dopo che il Mac si è svegliato. Fare clic due volte con il mouse nell'angolo in alto a sinistra del display principale. Wake Assist non farà nulla se rileverà un utente ma se il computer si riattiva ed è inattivo, viene fatto clic con il mouse.


1
La cosa AppleScript non ha funzionato per me. Ricevo un'immagine nera screencaptureanche dopo aver atteso qualche minuto.
LHF

Hai mai provato a premere altri tasti simulati - forse il tasto cursore non è abbastanza? Hai bisogno di una password al risveglio?
Graham Miln,

1
Ha funzionato bene per me su OS X 10.6
claytron

3

wuc ha scritto:

Puoi usare

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

per riattivare uno schermo per dormire su un Mac altrimenti "sveglio". Sostituisci la parte data / ora con l'ora corrente ovviamente.

Tuttavia, ciò non ha funzionato per me su un iMac del 2008 con il 10.9.1 o un MacBook Air del 2010 con il 10.9.2. Non sono sicuro che ciò abbia a che fare con la gestione energetica o l'hardware di Mavericks, o cosa.

Sono stato in grado di farlo funzionare impostando il tempo di veglia su 15 secondi nel futuro. Occasionalmente sono stato in grado di farlo funzionare con le impostazioni a partire da 12 o 13, ma non in modo affidabile. Ma potrebbero esserci stati altri fattori che non avevo realizzato in quel momento, ma 15 ha funzionato, quindi ho usato 15.

Ma come si calcolano 15 secondi nel futuro programmaticamente?

Ho usato gdatedal pacchetto GNU Coreutils ( datein OS X potrebbe essere in grado di farlo, ma se è possibile, non so come, e avevo già gdateinstallato):

[da usare dateinvece di gdateusare alias set_wake_time = 'date "-v + $ {OFFSET} S" "+% D% T"']

Ecco lo script che ho usato:

#!/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

Tutto dopo il '###################################################### ######### 'può essere rimosso una volta terminato il test.


date -jv+15Sfarà il trucco di calcolare la data tra 15 secondi in futuro da adesso. L' -jinterruttore impedisce datedi tentare di impostare l'orologio di sistema.
mike

1
Il comando date -jv+15S "+%m/%d/%Y %H:%M:%S"inserirà i 15 secondi in futuro nel formato corretto per pmset.
Aaron D,

Secondo la manpage pmset di OSX 10.10.3, esiste anche un'opzione "pmset relative wake wake seconds". Potrebbe valere la pena indagare anche.
JS.

1

Oh, come vorrei avere abbastanza rappresentante per votare la risposta di wuc @ le 10 volte che merita per questo problema esasperantemente frustrante (o almeno essere in grado di lasciare un semplice commento con gli elogi che merita).

Apple, nella sua saggezza paternalistica, ha aggiunto una "caratteristica" che ha intenzionalmente reso più difficile svegliare il display su Lion e Mountain Lion. Ciò ha reso la vita molto più difficile per coloro che desiderano svegliare il display da remoto (utilizzando i telecomandi IR o tramite VNC) per interagire con i loro Mac. Per qualche ragione, questo è diventato più pronunciato con OS X 10.8.2 .

L'utilizzo è pmsetstato una meravigliosa soluzione per me.

Passaggio 1: accedi al computer remoto utilizzando ssh myname@192.168.1.2(sostituisci con un nome utente e un ip appropriati per il Mac remoto).

Passaggio 2: sveglia il display utilizzando pmset schedule wake "06/27/2013 04:20:00"(con una data futura appropriata di tua scelta).


Sono abbastanza d'accordo e mi è piaciuto leggere la tua risposta, ma forse prendere in considerazione apple.stackexchange.com/help/how-to-answer .
DA Vincent,

0

Opzione se non vuoi usare gdate:

  • Abilita SSHD (Accesso remoto) in Preferenze di Sistema, Condivisione
  • Abilita "Riattiva accesso alla rete" in Preferenze di Sistema, Risparmio energia

inserisci questo codice in un file come 'wakeup.sh' nella tua cartella home:

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`"
  • Rendilo eseguibile con 'chmod + x wakeup.sh' e inserisci la tua password se vuoi. Altrimenti rilasciare l'eco e -S.

Se si desidera automatizzare questo processo in modo che funzioni da un computer Windows:

  • Ottieni PuTTY e uno strumento WakeOnLan da riga di comando (ovvero Aquila su SourceForge)
  • Crea un file di testo di una riga contenente './wakeup.sh'
  • scrivere un file batch in questo modo:

    @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

Cose che devi cambiare: il tuo IP, il tuo indirizzo MAC, la parola "irraggiungibile" potrebbe non essere quella che ottieni - potresti essere "scaduto". Naturalmente, archiviare una password di root in testo semplice non è una buona idea, ma come farlo in modo completamente automatico da Windows a OSX.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.