Пробуждение от терминала, общее просыпание

20

Это вопрос из двух частей. Сначала возникает практический вопрос "как?", А затем я спрашиваю предложения по конфигурации.

Во-первых, я усыпляю свои мониторы ночью, и я хотел бы иметь возможность удаленно разбудить дисплей. Есть ли утилита командной строки, которую я могу использовать, чтобы разбудить ее через SSH? Я знаю о WakeOnLan, но это кажется излишним.

Во-вторых, причина, по которой я хотел разбудить свой дисплей удаленно, связана с тем, как изменились настройки энергосбережения Lion. Инфракрасный пульт Apple больше не будит дисплей. Это огромная сделка для машины, которую я изначально купил, чтобы быть комбинированным настольным / домашним кинотеатром, так как она побеждает половину своей цели. Итак, есть ли у кого-нибудь идеи / предложения, что с этим делать? Это открытый конец, я знаю.

скоро
источник

Ответы:

25

Самый простой способ сделать это по SSH - использовать caffeinate -u(доступно, начиная с OS X 10.9, я думаю) для имитации активности пользователя.

Добавьте флаг, -t 5чтобы указать время ожидания 5 секунд (иначе, вам, вероятно, придется ctrl+ cотказаться от кофеина).

Асмус
источник
1
там вы идете (+) за ваш ответ, на который никто не обращал внимания. У меня есть так много тех, кто сам, куда приходят люди, задают вопрос новее, чтобы вернуться, чтобы проверить ответ.
Рускес
1
Согласно man-странице (в High Sierra), значение 5 секунд является значением по умолчанию для -uопции: если тайм-аут не указан с опцией -t, то это утверждение берется с тайм-
аутом
9

Вы можете использовать

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

чтобы разбудить спящий дисплей на «проснувшемся» Mac. Замените часть даты / времени на текущее время, конечно.

ВУК
источник
9

Услуга: caffeinate -u -t 2

Спать: pmset displaysleepnow

Дермот
источник
Отличное решение! Никогда не использовал caffeinateдля включения дисплея, но я думаю, это работает.
JMY1000
7

Пробуждение дисплея из командной строки

Для удаленного пробуждения экрана попробуйте запустить AppleScript в командной строке:

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

Это симулирует нажатие клавиши курсора и должно заставить Mac OS X 10 считать, что пользователь активен на компьютере.

Этот AppleScript основан на ответе: Как автоматизировать нажатие клавиш в AppleScript?

Пробуждение дисплея после пробуждения с помощью пульта дистанционного управления

Если вы просыпаетесь с Mac с помощью пульта дистанционного управления и дисплей не включается, попробуйте Wake Assist . Он не предназначен для этой ситуации, но может просто работать.

Wake Assist имитирует щелчок мыши после того, как проснется ваш Mac. В левом верхнем углу вашего основного дисплея дважды щелкают мышью. Wake Assist ничего не сделает, если обнаружит пользователя, но если компьютер просыпается и бездействует, щелкают мышью.

Грэм Милн
источник
1
AppleScript вещь не работает для меня. Я получаю черное изображение screencaptureдаже после нескольких минут ожидания.
LHF
Вы пробовали какие-либо другие симулированные нажатия клавиш - может быть, клавиши курсора недостаточно? Вам нужен пароль при пробуждении?
Грэм Милн
1
У меня нормально работало на OS X 10.6
глитрон
3

Вук написал:

Вы можете использовать

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

чтобы разбудить спящий дисплей на «проснувшемся» Mac. Замените часть даты / времени на текущее время, конечно.

Однако, это не сработало для меня на iMac 2008 года с 10.9.1 или в конце 2010 MacBook Air с 10.9.2. Я не уверен, имеет ли это какое-то отношение к управлению энергией Mavericks или аппаратному обеспечению, или как.

Я смог заставить его работать, установив время пробуждения на 15 секунд в будущем. Иногда мне удавалось заставить его работать с настройками всего 12 или 13, но ненадежно. Но, возможно, были и другие факторы, которые я тогда не осознавал, но 15 сработало, поэтому я использовал 15.

Но как вы рассчитываете 15 секунд в будущее программно?

Я использовал gdateиз пакета GNU Coreutils ( dateв OS X может быть в состоянии сделать это, но если это возможно, я не знаю, как, и я уже gdateустановил):

[использовать dateвместо gdateпсевдонима set_wake_time = 'date' -v + $ {OFFSET} S "" +% D% T "']

Вот скрипт, который я использовал:

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

Все после "#################################################### ######### 'можно удалить после завершения тестирования.

Ти Джей Луома
источник
date -jv+15Sсделает трюк вычисления даты 15 секунд в будущем с этого момента. -jПереключатель предотвращает dateот попыток установить системные часы.
май
1
Команда date -jv+15S "+%m/%d/%Y %H:%M:%S"переведет 15 секунд в будущем в правильный формат для pmset.
Аарон Д
Согласно странице управления OSX 10.10.3 pmset, есть также опция 'pmset относительное время включения'. Может быть, стоит провести расследование.
JS.
1

О, как бы мне хотелось, чтобы у меня было достаточно повторений, чтобы ответить на вопрос upvote @ wuc в 10 раз больше, чем он заслуживает этой безумно расстраивающей проблемы (или хотя бы иметь возможность оставить простой комментарий с похвалой, которой он заслуживает).

Apple, в своей патерналистской мудрости, добавила «особенность», которая преднамеренно затруднила пробуждение показа «Льва» и «Горного льва». Это значительно усложнило жизнь тем, кто желает удаленно разбудить дисплей (используя ИК-пульты или через VNC) для взаимодействия со своими компьютерами Mac. По некоторым причинам это стало более явным с OS X 10.8.2 .

Использование pmsetбыло изумительным обходным путем для меня.

Шаг 1: Войдите в систему на удаленном компьютере с помощью ssh myname@192.168.1.2(замените соответствующим именем пользователя и ip для удаленного Mac).

Шаг 2: Разбудите дисплей, используя pmset schedule wake "06/27/2013 04:20:00"(с соответствующей будущей датой по вашему выбору).

Д. Вудс
источник
Я вроде согласен, и мне понравилось читать ваш ответ, но, возможно, рассмотрим apple.stackexchange.com/help/how-to-answer .
Д.А. Винсент
0

Опция, если вы не хотите использовать gdate:

  • Включить SSHD (удаленный вход в систему) в Системных настройках, Общий доступ
  • Включить «Пробуждение для доступа к сети» в Системных настройках, Экономия энергии

поместите этот код в файл типа «wakeup.sh» в вашей домашней папке:

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`"
  • Сделайте его исполняемым с помощью chmod + x wakeup.sh и введите свой пароль, если хотите. В противном случае отбросьте эхо и -S.

Если вы хотите автоматизировать этот процесс для работы с машиной Windows:

  • Получить PuTTY и инструмент командной строки WakeOnLan (например, Aquila на SourceForge)
  • Создайте однострочный текстовый файл, содержащий «./wakeup.sh»
  • напишите пакетный файл так:

    @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

Вещи, которые вам нужно изменить: ваш IP, ваш MAC-адрес, слово «недостижимый» может не совпадать с тем, что вы получаете - вы можете получить «тайм-аут». Хранение пароля root в виде обычного текста, конечно, не очень хорошая идея, но это как сделать это полностью автоматически из Windows в OSX.

wellspokenman
источник