web-dev-qa-db-ja.com

sshで一時停止するにはどうすればよいですか?

この質問は ssh-userがサーバーをサスペンドできるようにdbusを設定する方法? ;とほぼ同じだと思います。私はそれをより良く定式化したかったのを除いて。

Ubuntuサーバーがノンストップで実行されていると仮定して、MyServerと呼びましょう。それでは、MyServerと同じローカルネットワーク上に別のPCがあり、それをMyLocalPCと呼びましょう。

MyLocalPCは、wakeonlanによってMyServerを介してオンにされない限り、サスペンド状態のままになります。プロセスのこの部分は完璧に機能します。sshを介してMyServerにログインし、MyServer sshプロンプトでwakeonlanを発行して、MyLocalPCを起動できます。

ただし、MyLocalPCの処理が完了したらすぐに、サスペンドに戻したいと思います。問題は次のとおりです。最初にMyLocalPCを介してsshに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

これはMyLocalPCを一時停止しますが、適切に終了するsshもブロックし、最終的にsshからMyServerがフリーズします。私はトリッキーになり、次のようなものを発行しようとします:

[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.

次に、DISPLAY変数を定義する必要がある場所を読み取りましたが、それも失敗します。

[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

MyLocalPCへのssh接続がフリーズせずに、MyServerにサスペンドを発行する方法を誰もが知っていますか?

4
sdaau

<enter>~&(3つのキーストローク:enter、squggle、ampersand)と入力するだけで、sshはバックグラウンドに移動し、最終的には自動的にタイムアウトします。このような場合に対話型セッションを放棄したい場合は、これで十分です。

または、代わりに、それをMyLocalPCのシェルスクリプトに入れて、接続をバッ​​クグラウンドにする方法で接続します。

ssh -f MyLocalPC go-to-sleep
3
poolie

ssh -Yを使用してX11転送を有効にする必要があります。または、at now + 2 minutesを使用してコマンドを1回だけ実行します(詳細については、man atを参照してください)。

2
Adam Byrtek

私にとって最も簡単なのは、atコマンドを使用することです。

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

次に、SSHセッションから切断します。

2
Cas

将来2分間のcronジョブを設定し、切断します

1
RobotHumans

ロックされたときにsshから抜け出すにはどうすればよいですか? 多くの有効な解決策があります。 1つはpoolieによって言及されています。システムに keep-alive timeout を設定しました。これは、~/.ssh/configに次を追加することにより、SSHセッションのハングを自動中断します。

Host *
ServerAliveInterval 5
ServerAliveCountMax 4

リモートマシンをサスペンドした後でも機能します。

0
krlmlr