Tela de ativação do terminal, ativação geral

20

Esta é uma questão de duas partes. Uma questão prática, "como fazer", é a primeira, e depois peço sugestões de configuração.

Primeiro, coloco meus monitores para dormir à noite e gostaria de poder reativá-los remotamente. Existe um utilitário de linha de comando que eu possa usar para ativá-lo via SSH? Eu sei sobre o WakeOnLan, mas isso parece exagero.

Segundo, todo o motivo de eu querer ativar minha tela remotamente tem a ver com a alteração das configurações de economia de energia do Lion. O controle remoto infravermelho da Apple não ativa mais a tela. Este é um grande negócio para uma máquina que eu comprei originalmente para ser um PC combinado de desktop / home theater, pois derrota metade de seu objetivo. Então, alguém tem alguma idéia / sugestão sobre o que fazer? Isso está aberto, eu sei.

anon
fonte

Respostas:

25

A maneira mais fácil de fazer isso no SSH é usar caffeinate -u(disponível desde o OS X 10.9, eu acho) para simular a atividade do usuário.

Adicionar a bandeira -t 5para especificar um tempo limite de 5 segundos (mais você teria que ctrl+ cfora do Caffeinate, parece).

Asmus
fonte
11
lá você vai (+) para a sua resposta que ninguém prestou atenção. Eu tenho tantos deles, onde as pessoas vêm fazer uma pergunta mais recente para voltar e verificar se há uma resposta.
Ruskes
11
De acordo com a página do manual (em High Sierra), os 5 segundos são um padrão para a -uopção: se um tempo limite não for especificado com a opção '-t', essa asserção será tomada com o tempo limite padrão de 5 segundos
JJarava
9

Você pode usar

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

para ativar uma tela adormecida em um Mac "acordado". Substitua a parte da data / hora pela hora atual, é claro.

wuc
fonte
9

Despertar: caffeinate -u -t 2

Dormir: pmset displaysleepnow

Dermot
fonte
Ótima solução! Nunca usei caffeinatepara ligar a tela, mas acho que funciona.
JMY1000
7

Ativando a tela da linha de comando

Para ativar sua exibição remotamente, tente executar um AppleScript na linha de comando:

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

Isso simulará o pressionamento da tecla do cursor e deve fazer o Mac OS X 10 acreditar que um usuário está ativo no computador.

Este AppleScript é baseado na resposta: Como automatizar uma pressão de tecla no AppleScript?

Acordando a tela após acordar com o controle remoto

Se você estiver acordando o Mac usando o controle remoto e a tela não estiver ligada, tente o Wake Assist . Ele não foi projetado para essa situação, mas pode funcionar.

O Wake Assist simula um clique do mouse após a ativação do Mac. O mouse é clicado duas vezes no canto superior esquerdo da tela principal. O Wake Assist não fará nada se detectar um usuário, mas se o computador acordar e estiver ocioso, o mouse será clicado para você.

Graham Miln
fonte
11
A coisa AppleScript não funcionou para mim. Recebo uma imagem em preto screencapturemesmo depois de esperar alguns minutos.
lhf 18/07/12
Você já tentou outras teclas simuladas - talvez a tecla cursor não seja suficiente? Você precisa de uma senha ao ativar?
Graham Miln
11
Funcionou bem para mim no OS X 10.6
claytron 14/11/2012
3

wuc escreveu:

Você pode usar

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

para ativar uma tela adormecida em um Mac "acordado". Substitua a parte da data / hora pela hora atual, é claro.

No entanto, isso não funcionou para mim no iMac de 2008 com a versão 10.9.1 ou no MacBook Air de 2010 com a versão 10.9.2. Não tenho certeza se isso tem algo a ver com o gerenciamento de energia ou o hardware da Mavericks, ou o quê.

Consegui fazê-lo funcionar, definindo o tempo de ativação para 15 segundos no futuro. Ocasionalmente, conseguia fazê-lo funcionar com a configuração tão baixa quanto 12 ou 13, mas não de forma confiável. Mas pode ter havido outros fatores que eu não percebi na época, mas 15 funcionaram, então usei 15.

Mas como você calcula 15 segundos no futuro programaticamente?

Eu usei gdateno pacote GNU Coreutils ( dateno OS X pode ser capaz de fazer isso, mas se puder, não sei como e já o gdateinstalei):

[usar em datevez de gdateusar o alias set_wake_time = 'date "-v + $ {OFFSET} S" "+% D% T"']

Aqui está o script que eu usei:

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

Tudo após o '####################################################### ######### 'pode ser removido após a conclusão do teste.

TJ Luoma
fonte
date -jv+15Sfará o truque de calcular a data daqui a 15 segundos no futuro. O -jinterruptor impede datede tentar acertar o relógio do sistema.
microfone
11
O comando date -jv+15S "+%m/%d/%Y %H:%M:%S"colocará os 15 segundos no futuro no formato correto para pmset.
Aaron D
De acordo com a página de manual do OSX 10.10.3 pmset, também há uma opção 'segundos de ativação relativa do pmset'. Pode valer a pena investigar também.
JS.
1

Ah, como eu gostaria de ter rep representante suficiente para votar de volta na resposta de @ wuc as 10 vezes que merece por esse problema irritantemente frustrante (ou pelo menos ser capaz de deixar um simples comentário com os elogios que merece).

A Apple, em sua sabedoria paternalista, acrescentou um "recurso" que intencionalmente dificultava a exibição da exibição no Lion e no Mountain Lion. Isso tornou a vida muito mais difícil para aqueles que desejam ativar remotamente a tela (usando controles remotos por infravermelho ou via VNC) para interagir com seus Macs. Por alguma razão, isso se tornou mais pronunciado com o OS X 10.8.2 .

Usar pmsetfoi uma solução maravilhosa para mim.

Etapa 1: Faça login na máquina remota usando ssh [email protected](substitua por um nome de usuário e ip apropriados para o Mac remoto).

Etapa 2: acorde a tela usando pmset schedule wake "06/27/2013 04:20:00"(com uma data futura apropriada de sua escolha).

D. Woods
fonte
Eu meio que concordo e gostei de ler sua resposta, mas talvez considere apple.stackexchange.com/help/how-to-answer .
DA Vincent
0

Opção se você não quiser usar o gdate:

  • Ative SSHD (Login Remoto) em Preferências do Sistema, Compartilhamento
  • Ative 'Ativar acesso à rede' em Preferências do sistema, Economia de energia

coloque esse código em um arquivo como 'wakeup.sh' na sua pasta pessoal:

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`"
  • Torne-o executável com 'chmod + x wakeup.sh' e digite sua senha, se quiser. Caso contrário, solte o eco e -S.

Se você deseja automatizar esse processo para funcionar em uma máquina Windows:

  • Obtenha o PuTTY e uma ferramenta WakeOnLan da linha de comando (ou seja, Aquila no SourceForge)
  • Crie um arquivo de texto de uma linha contendo './wakeup.sh'
  • escreva um arquivo em lote 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

O que você precisa mudar: seu IP, seu endereço MAC, a palavra 'inacessível' pode não ser o que você obtém - você pode ter atingido o tempo limite. O armazenamento de uma senha root em texto sem formatação não é uma boa ideia, mas é como fazê-lo automaticamente do Windows para o OSX.

homem falado
fonte