Affichage de réveil depuis le terminal, réveil général

20

C'est une question en deux parties. Une question pratique "comment faire" est d'abord, puis je demande des suggestions de configuration.

Tout d'abord, j'ai mis mes écrans en veille la nuit et j'aimerais pouvoir réveiller l'écran à distance. Existe-t-il un utilitaire de ligne de commande que je peux utiliser pour le réactiver via SSH? Je connais WakeOnLan, mais cela semble exagéré.

Deuxièmement, toute la raison pour laquelle je souhaite réveiller mon écran à distance est liée à la modification des paramètres d'économie d'énergie de Lion. La télécommande infrarouge Apple ne réveille plus l'écran. C'est une affaire énorme pour une machine que j'ai achetée à l'origine pour être un ordinateur de bureau / home cinéma combiné, car elle bat la moitié de son objectif. Alors, quelqu'un a-t-il des idées / suggestions à faire à ce sujet? C'est ouvert, je sais.

anon
la source

Réponses:

25

La façon la plus simple de le faire via SSH est d'utiliser caffeinate -u(disponible depuis OS X 10.9 je pense) pour simuler l'activité des utilisateurs.

Ajoutez le drapeau -t 5pour spécifier un délai d'attente de 5 secondes (sinon vous devriez ctrl+ csortir de la caféine, semble-t-il).

Asmus
la source
1
là, vous allez un (+) pour votre réponse que personne n'a prêté attention. J'en ai tellement de moi-même, où les gens viennent poser une question plus récente pour revenir pour vérifier une réponse.
Ruskes
1
Selon la page de manuel (dans High Sierra), les 5 secondes sont un défaut pour l' -uoption: si un délai d'attente n'est pas spécifié avec l'option '-t', alors cette assertion est prise avec un délai d'attente de 5 secondes par défaut
JJarava
9

Vous pouvez utiliser

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

pour réveiller un écran de veille sur un Mac autrement "éveillé". Remplacez la partie date / heure par l'heure actuelle bien sûr.

wuc
la source
9

Réveiller: caffeinate -u -t 2

Sommeil: pmset displaysleepnow

Dermot
la source
Bonne solution! Jamais pensé à utiliser caffeinatepour allumer l'écran, mais je suppose que cela fonctionne.
JMY1000
7

Réveiller l'affichage à partir de la ligne de commande

Pour réveiller votre écran à distance, essayez d'exécuter un AppleScript sur la ligne de commande:

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

Cela simulera la pression de la touche curseur et devrait faire croire à Mac OS X 10 qu'un utilisateur est actif sur l'ordinateur.

Cet AppleScript est basé sur la réponse: Comment automatiser une pression de touche dans AppleScript?

Réveil de l'écran après le réveil avec la télécommande

Si vous réveillez votre Mac à l'aide de la télécommande et que l'écran ne s'allume pas, essayez Wake Assist . Il n'est pas conçu pour cette situation mais pourrait bien fonctionner.

Wake Assist simule un clic de souris après le réveil de votre Mac. La souris est cliquée deux fois dans le coin supérieur gauche de votre écran principal. Wake Assist ne fait rien s'il détecte un utilisateur, mais si l'ordinateur se réveille et est inactif, la souris est cliquée pour vous.

Graham Miln
la source
1
La chose AppleScript n'a pas fonctionné pour moi. J'obtiens une image noire screencapturemême après avoir attendu quelques minutes.
lhf
Avez-vous essayé d'autres pressions de touches simulées - la touche curseur n'est peut-être pas suffisante? Avez-vous besoin d'un mot de passe au réveil?
Graham Miln
1
Fonctionné très bien pour moi sur OS X 10.6
claytron
3

wuc a écrit:

Vous pouvez utiliser

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

pour réveiller un écran de veille sur un Mac autrement "éveillé". Remplacez la partie date / heure par l'heure actuelle bien sûr.

Cependant, cela n'a pas fonctionné pour moi sur un iMac vers 2008 exécutant 10.9.1 ou un MacBook Air fin 2010 exécutant 10.9.2. Je ne sais pas si cela a quelque chose à voir avec la gestion de l'énergie de Mavericks ou le matériel, ou quoi.

J'ai pu le faire fonctionner en définissant l'heure de réveil à 15 secondes dans le futur. Parfois, j'ai pu le faire fonctionner avec un réglage aussi bas que 12 ou 13, mais pas de manière fiable. Mais il y avait peut-être d'autres facteurs que je ne comprenais pas à l'époque, mais 15 ont fonctionné, alors j'ai utilisé 15.

Mais comment calculer 15 secondes dans le futur par programme?

J'ai utilisé à gdatepartir du paquet GNU Coreutils ( datedans OS X pourrait être en mesure de le faire, mais si c'est le cas, je ne sais pas comment, et j'avais déjà gdateinstallé):

[à utiliser dateau lieu d' gdateutiliser l'alias set_wake_time = 'date "-v + $ {OFFSET} S" "+% D% T"']

Voici le script que j'ai utilisé:

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

Tout ce qui se trouve après le '############################################## ######### 'peut être supprimé une fois les tests terminés.

TJ Luoma
la source
date -jv+15Sfera l'affaire de calculer la date de 15 secondes dans le futur à partir de maintenant. Le -jcommutateur empêche dated'essayer de régler l'horloge système.
Mike
1
La commande date -jv+15S "+%m/%d/%Y %H:%M:%S"mettra les 15 secondes à l'avenir dans le format correct pour pmset.
Aaron D
Selon la page de manuel OSX 10.10.3 pmset, il existe également une option «pmset relative wake secondes». Cela pourrait aussi valoir la peine d'être étudié.
JS.
1

Oh, comme j'aurais aimé avoir suffisamment de représentants pour voter pour la réponse de @ wuc les 10 fois qu'elle mérite pour ce problème exaspérant et frustrant (ou pour au moins pouvoir laisser un simple commentaire avec les éloges qu'elle mérite).

Apple, dans sa sagesse paternaliste, a ajouté une "fonctionnalité" qui a intentionnellement rendu plus difficile le réveil de l'affichage sur Lion et Mountain Lion. Cela a rendu la vie beaucoup plus difficile pour ceux qui souhaitent réveiller l'écran à distance (à l'aide de télécommandes IR ou via VNC) pour interagir avec leur Mac. Pour une raison quelconque, cela est devenu plus prononcé avec OS X 10.8.2 .

L'utilisation a pmsetété une merveilleuse solution de contournement pour moi.

Étape 1: Connectez-vous à la machine distante à l'aide de ssh [email protected](remplacez par un nom d'utilisateur et une adresse IP appropriés pour le Mac distant).

Étape 2: Réveillez l'écran en utilisant pmset schedule wake "06/27/2013 04:20:00"(avec une date future appropriée de votre choix).

D. Woods
la source
Je suis en quelque sorte d'accord et j'ai apprécié la lecture de votre réponse, mais pensez peut-être à apple.stackexchange.com/help/how-to-answer .
DA Vincent
0

Option si vous ne souhaitez pas utiliser gdate:

  • Activez SSHD (connexion à distance) sous Préférences Système, Partage
  • Activez «Wake for network access» sous Préférences Système, Energy Saver

mettez ce code dans un fichier comme 'wakeup.sh' dans votre dossier personnel:

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`"
  • Rendez-le exécutable avec 'chmod + x wakeup.sh' et entrez votre mot de passe si vous le souhaitez. Sinon, supprimez l'écho et -S.

Si vous souhaitez automatiser ce processus pour qu'il fonctionne à partir d'une machine Windows:

  • Obtenez PuTTY et un outil WakeOnLan en ligne de commande (par exemple Aquila sur SourceForge)
  • Créez un fichier texte d'une ligne contenant './wakeup.sh'
  • écrivez un fichier batch comme ceci:

    @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

Choses que vous devez changer: votre adresse IP, votre adresse MAC, le mot «inaccessible» peuvent ne pas être ce que vous obtenez - vous pourriez être «expiré». Le stockage d'un mot de passe root en texte brut n'est bien sûr pas une bonne idée, mais c'est comment le faire de manière complètement automatique de Windows vers OSX.

wellspokenman
la source