从终端唤醒显示器,一般唤醒


20

这是一个两部分的问题。首先是一个实际的“如何”问题,然后我要求配置建议。

首先,我将显示器放在晚上入睡,我希望能够远程唤醒显示器。是否可以使用命令行实用程序通过SSH唤醒它?我知道WakeOnLan,但这似乎有些过分。

其次,我想远程唤醒显示器的全部原因与Lion的节能设置如何变化有关。Apple红外线遥控器不再唤醒显示屏。对于我最初购买的台式/家庭影院组合电脑而言,这是一笔不小的交易,因为它无法达到目标的一半。那么,有人对此有什么想法/建议吗?我知道这是开放式的。

Answers:


25

通过SSH执行此操作的最简单方法是使用caffeinate -u(我认为OS X 10.9起可用)来模拟用户活动。

添加该标志-t 5以指定5秒钟的超时(否则,您必须ctrl+ c摆脱咖啡因)。


1
在那里,您会得到一个(+)答案,没人会注意。我有那么多自我,ppl来哪里问一个新问题,然后再回来检查答案。
罗斯,2015年

1
根据手册页(在High Sierra中),该-u选项的默认设置为5秒:如果未使用'-t'选项指定超时,则该断言的默认设置为5秒超时
JJarava

9

您可以使用

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

在原本“清醒”的Mac上唤醒睡眠的显示器。当然,将日期/时间部分替换为当前时间。


9

唤醒: caffeinate -u -t 2

睡觉: pmset displaysleepnow


不错的解决方案!虽然从不使用它caffeinate来打开显示器,但我想它可以工作。
JMY1000 '16

7

从命令行唤醒显示

要远程唤醒显示器,请尝试在命令行上运行AppleScript:

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

这将模拟按下光标键 ,并使Mac OS X 10相信用户在计算机上处​​于活动状态。

此AppleScript基于以下答案:如何在AppleScript中自动进行按键操作?

用遥控器唤醒后唤醒显示器

如果您要使用遥控器唤醒Mac,并且显示器无法开机,请尝试唤醒助手。它不是针对这种情况而设计的,但可能会起作用。

Mac唤醒后,Wake Assist会模拟鼠标单击。在主显示屏的左上角单击两次鼠标。如果Wake Assist检测到用户,则不会执行任何操作,但是如果计算机唤醒并处于空闲状态,则会为您单击鼠标。


1
AppleScript的东西对我不起作用。screencapture等待几分钟后,我仍然得到黑色图像。
lhf 2012年

您是否尝试过其他模拟按键操作-可能光标键不够?您是否需要唤醒密码?
格雷厄姆·米尔恩

1
在OS X 10.6上对我来说工作正常
claytron,2012年

3

wuc写道:

您可以使用

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

在原本“清醒”的Mac上唤醒睡眠的显示器。当然,将日期/时间部分替换为当前时间。

但是,这对于运行大约10.9.1的大约2008 iMac或运行10.9.2的2010年底的MacBook Air并不适用。我不确定这是否与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尝试设置系统时钟。
mike 2014年

1
该命令date -jv+15S "+%m/%d/%Y %H:%M:%S"会将以后的15秒设置为的正确格式pmset
亚伦D

根据OSX 10.10.3 pmset联机帮助页,也有一个“ pmset相对唤醒秒数”选项。可能也值得研究。
JS。

1

哦,我希望我有足够的代表来对@wuc的答案进行10次投票,以解决这个令人发指的令人沮丧的问题(或者至少可以用应有的赞美发表一个简单的评论)。

苹果公司以其家长式的智慧,添加了一个“功能”,有意使它难以在Lion和Mountain Lion 上唤醒显示。对于希望远程唤醒显示器(使用IR遥控器或通过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
DA Vincent

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 + xakeup.sh”使其可执行,然后根据需要输入密码。否则,删除回声和-S。

如果要自动执行此过程以在Windows计算机上运行:

  • 获取PuTTY和命令行WakeOnLan工具(即SourceForge上的Aquila)
  • 制作一个包含“ ./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完全自动地进行操作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.