OS X: como impedir que o computador durma durante uma sessão ssh


29

Quando ssh em um computador OS X na minha rede, a sessão dura até que o OS X entre no modo de suspensão .

Existe uma maneira de impedir que isso aconteça durante a minha sessão SSH , além de bater fisicamente no mouse ou digitar teclas ou desativar manualmente a função de suspensão?

EDIT: A sessão ssh normalmente seria uma montagem simples do sshfs.


Você também não gostaria de impedir que ele durma antes da sua sessão SSH?
SamB

Respostas:


9

Esta não é uma solução pronta para uso, mas possivelmente funcionará se ninguém encontrar uma solução :-)

Você pode manipular as configurações de gerenciamento de energia com o comando pmset. Veja a página de manual para mais informações.

A configuração interessante que queremos manipular é o sono :

sleep - temporizador de suspensão do sistema (valor em minutos ou 0 para desativar)

Portanto, podemos usar os seguintes comandos:

sudo pmset sleep 25      # go to sleep after 25 minutes
sudo pmset sleep 0       # disable sleep

Agora temos que acionar esses comandos após um login e logut. Se bem me lembro, o Bash é o shell padrão do Mac OS X que nos leva a esses dois arquivos:

   ~/.bash_profile
          The personal initialization file, executed for login shells
   ~/.bash_logout
          The individual login shell cleanup file, executed when a login shell exits

Edite ou crie-os no diretório inicial e adicione os comandos apropriados. Se desejar, salve o valor atual de suspensão em um arquivo temporário e restaure-o depois.

O último problema a resolver é o prompt de senha do sudo. Para dar ao usuário a permissão de chamar o pmset sem nenhuma senha, edite seus / etc / sudoers com sudoedit. Você precisa usar a NOPASSWDtag. Se isso é novo para você, consulte o manual do sudoers .


1
este método funcionaria se a conexão ssh fosse apenas uma montagem sshfs?
Stefan

1
Não tenho certeza, mas acho que o sshfs não abrirá um shell de logon, portanto isso não funcionará com o sshfs.
echox 8/09/10

9

Isso me permitiu usar meu mac sobre SSH, não importa o quê, desde que o mac esteja conectado a uma fonte de energia.

Preferências do sistema, Economia de energia, Impedir que o computador durma automaticamente quando a tela estiver desligada

Tudo é desligado quando o Mac desliga sua fonte de energia, para que você não precise se preocupar com a duração da bateria.


1
Esta opção é inútil no macOS Sierra. Meu iMac dorme independentemente dessa configuração, ativa o acesso SSH e dorme imediatamente após o logon do SSH. É realmente irritante.
11267 Bruno Philipe

Esta resposta finalmente resolveu meu problema depois de mexer no ~ / .ssh / config por horas no iMac do Mojave
n1000 04/04

6

O utilitário pmset embutido no OS X possui uma configuração que pode fazer o que você deseja. Verifique a página de pmsetmanual para a ttyskeepawakeconfiguração e a explicação que o acompanha.

O comando a seguir provavelmente fará o que você deseja:

sudo pmset -c ttyskeepawake 1

O -csinalizador ativa essa configuração especificamente quando o computador está funcionando com energia CA (ao contrário da bateria ou da UPS) e ttyskeepawake 1impede que o computador durma durante uma sessão tty ativa (presumivelmente remota). Ele vai permitir que o sono se a sessão esteve inactiva durante mais tempo do que o temporizador de sono, mas se isso é um problema, talvez o computador não deve ser definido para dormir.


6

Para usar o SSH para abrir um shell em uma máquina OSX remota e impedir que ele durma durante a sessão SSH:

$ ssh -t me@mymacbook caffeinate -i bash

5

Desde o Mac OS X 10.8, você deve poder usar o caffeinate(8)comando.

Tente caffeinate -s ssh server.example.com.


9
O OP está tentando impedir o Mac remoto (ou seja, o servidor ssh) de dormir. A menos que eu esteja enganado, seu exemplo impedirá apenas o sono no terminal do cliente.
Owen

3

Eu adicionei o seguinte script em .bash_profile

if expr "$(ps -o comm= $PPID)" : '^sshd:' > /dev/null; then
  caffeinate -s $SHELL --login
  exit $?
fi

Se o processo for filho direto de um daemon ssh, execute um mesmo shell através do comando caffeinate (8) para impedir que o sistema durma durante a sessão ssh.


2

Uma pesquisa na web para impedir o sono do mac traz muitas informações boas sobre utilitários e truques que você pode usar.

No entanto, na sua situação, suspeito que o que você realmente deseja fazer é ter uma sessão ssh separada que execute um programa de linha de comando muito simples que impede o Mac de dormir. A Apple fornece o código-fonte completo na seção Perguntas e respostas técnicas 1160: Prevenção do sono . (Infelizmente, esta página está quebrada no site da Apple atualmente, mas você pode obter uma cópia do cache do Google.)

Não testei para ver se este programa pode ser executado com êxito em uma sessão ssh, mas parece que poderia.

Observe que as implementações do sshfs geralmente não ficam conectadas ao sistema remoto o tempo todo e apenas executam uma sessão quando desejam um arquivo ou diretório. Portanto, você precisa de uma sessão ssh separada, executando em uma janela de terminal minimizada, para executar o programa insônia.

A vantagem dessa abordagem é que você não precisa usar o sudo ou mexer nas configurações de gerenciamento de energia do sistema.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.