Como suspço o ssh?

4

Eu acho que esta questão é praticamente o mesmo que Como configurar o dbus para permitir que o ssh-user suspenda o servidor? ; exceto que queria formular melhor.

Suponha que eu tenha um servidor Ubuntu rodando sem parar, vamos chamá-lo de MyServer . Vamos dizer então, eu tenho outro PC na mesma rede local como MyServer , vamos chamá-lo MyLocalPC .

MyLocalPC é então mantido em suspensão, a menos que seja ativado por wakeonlan por MyServer . Essa parte do processo funciona perfeitamente para mim: posso fazer login via ssh to MyServer e, no prompt MyServer ssh, posso emitir wakeonlan e MyLocalPC acorda - ótimo.

Então, no entanto, assim que eu terminar de trabalhar com MyLocalPC , gostaria de colocá-lo novamente em suspensão. O problema é o seguinte - eu posso colocar a máquina em suspender fácil, se eu ssh em MyLocalPC primeiro via ssh :

[MyServer]$ ssh MyLocalPC
[MyLocalPC]$ dbus-send --session --dest=org.freedesktop.PowerManagement --type=method_call --print-reply --reply-timeout=2000 /org/freedesktop/PowerManagement org.freedesktop.PowerManagement.Suspend

Isso suspenderá MyLocalPC , mas também bloqueará a ssh saindo corretamente e, por fim, a ssh to MyServer será congelada. Eu tento ficar complicado e emitir algo assim:

[MyServer]$ ssh MyLocalPC "dbus-send --session --dest=org.freedesktop.PowerManagement --type=method_call --print-reply --reply-timeout=2000 /org/freedesktop/PowerManagement org.freedesktop.PowerManagement.Suspend"
Failed to open connection to "session" message bus: /bin/dbus-launch terminated abnormally with the following error: Autolaunch error: X11 initialization failed.

Então eu li em algum lugar DISPLAY variável deve ser definida - mas isso também falha:

[MyServer]$ ssh MyLocalPC "DISPLAY=:0 dbus-send --session --dest=org.freedesktop.PowerManagement --type=method_call --print-reply --reply-timeout=2000 /org/freedesktop/PowerManagement  org.freedesktop.PowerManagement.Suspend"
Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.PowerManagement was not provided by any .service files

Alguém sabe como posso emitir uma suspensão para MyLocalPC , sem a ssh de conexão para MyServer de congelamento?

    
por sdaau 18.04.2011 / 08:44

5 respostas

3

Basta digitar <enter>~& (são três pressionamentos de tecla: enter, squggle, e comercial) e o ssh entrará no segundo plano e, por fim, no tempo limite. Isso é bom se você quiser simplesmente abandonar uma sessão interativa em um caso como este.

Ou, como alternativa, coloque isso em um script de shell no MyLocalPC e conecte-se de uma maneira que seja o plano de fundo da conexão:

ssh -f MyLocalPC go-to-sleep
    
por poolie 18.04.2011 / 11:12
2

Você precisa ativar o encaminhamento do X11 usando ssh -Y . Como alternativa, use at now + 2 minutes para executar o comando apenas uma vez (consulte man at para obter mais informações).

    
O
por Adam Byrtek 18.04.2011 / 10:11
2

Para mim, o mais simples é usar o comando at :

echo 'pm-suspend' | sudo at now + 2 minutes

Em seguida, desconecte-se da sessão SSH.

    
por Cas 05.10.2012 / 02:31
1

defina um cron job por 2 minutos no futuro e desconecte

    
por RobotHumans 18.04.2011 / 08:51
0

Como posso sair do ssh quando ele trava? Existem muitas soluções válidas. Um foi mencionado pelo poolie; Eu configurei um tempo de espera de atividade no meu sistema que suspenderá automaticamente as sessões SSH suspensas adicionando o seguinte a ~/.ssh/config :

Host *
ServerAliveInterval 5
ServerAliveCountMax 4

Funciona também depois de suspender a máquina remota.

    
por krlmlr 05.09.2013 / 21:39