Despertador desde la terminal, despertador general

20

Esta es una pregunta de dos partes. Una pregunta práctica de "cómo" es primero, y luego pido sugerencias de configuración.

Primero, puse mis pantallas para dormir por la noche, y me gustaría poder despertar la pantalla de forma remota. ¿Hay alguna utilidad de línea de comandos que pueda usar para activarla mediante SSH? Sé sobre WakeOnLan, pero eso parece una exageración.

En segundo lugar, toda la razón por la que quiero reactivar mi pantalla de forma remota tiene que ver con cómo cambió la configuración de ahorro de energía de Lion. El control remoto infrarrojo de Apple ya no activa la pantalla. Este es un gran negocio para una máquina que compré originalmente para ser una PC combinada de escritorio / cine en casa, ya que frustra la mitad de su propósito. Entonces, ¿alguien tiene alguna idea / sugerencia que hacer al respecto? Esto es abierto, lo sé.

luego
fuente

Respuestas:

25

La forma más fácil de hacer esto a través de SSH es usar caffeinate -u(disponible desde OS X 10.9, creo) para simular la actividad del usuario.

Agregue la bandera -t 5para especificar un tiempo de espera de 5 segundos (de lo contrario, tendría que dejar el cafeína ctrl+ c).

Asmus
fuente
1
ahí tienes un (+) para tu respuesta a la que nadie ha prestado atención. Tengo muchos de ellos, donde la gente viene a hacer una pregunta más reciente para volver a buscar una respuesta.
Ruskes
1
De acuerdo con la página de manual (en High Sierra), los 5 segundos son predeterminados para la -uopción: si no se especifica un tiempo de espera con la opción '-t', esta afirmación se toma con un tiempo de espera predeterminado de 5 segundos
JJarava
9

Puedes usar

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

para despertar una pantalla dormida en una Mac "despierta". Reemplace la parte de fecha / hora con la hora actual, por supuesto.

wuc
fuente
9

Despertar: caffeinate -u -t 2

Dormir: pmset displaysleepnow

Dermot
fuente
Buena solución! Nunca caffeinatepensé en usar para encender la pantalla, pero supongo que funciona.
JMY1000
7

Despertar la pantalla desde la línea de comandos

Para activar su pantalla de forma remota, intente ejecutar un AppleScript en la línea de comando:

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

Esto simulará presionar la tecla del cursor y debería hacer que Mac OS X 10 crea que un usuario está activo en la computadora.

Este AppleScript se basa en la respuesta, ¿Cómo automatizo una pulsación de tecla en AppleScript?

Activar la pantalla después de activar con el control remoto

Si está despertando su Mac con el control remoto y la pantalla no se enciende, pruebe Wake Assist . No está diseñado para esta situación, pero podría funcionar.

Wake Assist simula un clic del mouse después de que su Mac se activa. Se hace clic dos veces en el mouse en la esquina superior izquierda de la pantalla principal. Wake Assist no hará nada si detecta a un usuario pero si la computadora se despierta y está inactiva, entonces se hace clic en el mouse por usted.

Graham Miln
fuente
1
Lo de AppleScript no me funcionó. Me sale una imagen en negro screencaptureincluso después de esperar unos minutos.
lhf
¿Has probado alguna otra pulsación simulada de teclas? ¿Quizás la tecla del cursor no es suficiente? ¿Requiere una contraseña para despertarse?
Graham Miln
1
Me funcionó bien en OS X 10.6
claytron
3

wuc escribió:

Puedes usar

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

para despertar una pantalla dormida en una Mac "despierta". Reemplace la parte de fecha / hora con la hora actual, por supuesto.

Sin embargo, eso no funcionó para mí en un iMac circa 2008 con 10.9.1 o un MacBook Air de finales de 2010 con 10.9.2. No estoy seguro de si esto tiene algo que ver con la administración de energía de Mavericks o el hardware, o qué.

Pude hacer que funcionara configurando el tiempo de activación en 15 segundos en el futuro. Ocasionalmente pude hacer que funcione con la configuración tan baja como 12 o 13, pero no de manera confiable. Pero puede haber otros factores de los que no me di cuenta en ese momento, pero 15 funcionaron, así que usé 15.

Pero, ¿cómo calculas 15 segundos en el futuro mediante programación?

Utilicé gdateel paquete GNU Coreutils ( dateen OS X podría hacerlo, pero si puede, no sé cómo, y ya lo había gdateinstalado):

[para usar en datelugar de gdateusar alias set_wake_time = 'date "-v + $ {OFFSET} S" "+% D% T"']

Aquí está el script que usé:

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

Todo después de '############################################## ######### 'se puede eliminar una vez que haya terminado la prueba.

TJ Luoma
fuente
date -jv+15Shará el truco de calcular la fecha 15 segundos en el futuro a partir de ahora. El -jinterruptor evita que dateintente configurar el reloj del sistema.
mike
1
El comando date -jv+15S "+%m/%d/%Y %H:%M:%S"pondrá los 15 segundos en el futuro en el formato correcto para pmset.
Aaron D
De acuerdo con la página de manual de OSX 10.10.3 pmset, también existe la opción 'pmset relativa wake segundos'. Podría valer la pena investigar también.
JS.
1

Oh, cómo desearía tener suficiente representante para votar la respuesta de @ wuc las 10 veces que merece por este problema enloquecedoramente frustrante (o al menos poder dejar un simple comentario con los elogios que merece).

Apple, en su sabiduría paternalista, agregó una "característica" que intencionalmente hizo más difícil despertar la pantalla de Lion y Mountain Lion. Esto ha hecho la vida mucho más difícil para aquellos que desean activar remotamente la pantalla (usando controles remotos IR o VNC) para interactuar con sus Macs. Por alguna razón, esto se hizo más pronunciado con OS X 10.8.2 .

Usar pmsetfue una solución maravillosa para mí.

Paso 1: Inicie sesión en la máquina remota usando ssh [email protected](reemplace con un nombre de usuario apropiado e ip para la Mac remota).

Paso 2: Despierte la pantalla usando pmset schedule wake "06/27/2013 04:20:00"(con una fecha futura apropiada de su elección).

D. Woods
fuente
Estoy de acuerdo, y disfruté leyendo tu respuesta, pero tal vez considere apple.stackexchange.com/help/how-to-answer .
DA Vincent
0

Opción si no quieres usar gdate:

  • Habilite SSHD (inicio de sesión remoto) en Preferencias del sistema, Compartir
  • Habilite 'Wake for network access' en Preferencias del sistema, Energy Saver

ponga este código en un archivo como 'wakeup.sh' en su carpeta de inicio:

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`"
  • Haga que sea ejecutable con 'chmod + x wakeup.sh' e ingrese su contraseña si lo desea. De lo contrario, suelte el eco y -S.

Si desea automatizar este proceso para que funcione desde una máquina Windows:

  • Obtenga PuTTY y una herramienta WakeOnLan de línea de comandos (es decir, Aquila en SourceForge)
  • Cree un archivo de texto de una línea que contenga './wakeup.sh'
  • escribe un archivo por lotes como este:

    @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

Cosas que debe cambiar: su IP, su dirección MAC, la palabra "inalcanzable" puede no ser lo que obtiene, puede que se le "agote el tiempo de espera". Por supuesto, almacenar una contraseña de root en texto plano no es una buena idea, pero esta es la forma de hacerlo de forma completamente automática de Windows a OSX.

hablador
fuente