web-dev-qa-db-ja.com

SSHにログインしてプログラムを実行する単一のコマンド?

SSH経由でリモートサーバーにログインし、リモートログインシェルでプログラムを実行する単一のコマンドを構築する方法はありますか?

OpenSSHマニュアルでは、「コマンドが指定されている場合、ログインシェルの代わりにリモートホストで実行されます」と書かれています。したがって、たとえば、ssh user@server mailはリモートサーバーにログインし、メールボックスのステータスを表示して、ローカルシェルに戻ります。メールのステータスを表示した後、リモートシェルにとどまる方法はありますか?

さらに、ssh user@server [command]は、コマンドがvimやmuttなどのプログラムである場合は機能しないようです。リモートシェルにログインしてプログラムを実行する方法はありますか。プログラム中にリモートシェルにとどまり、プログラムを終了した後、特定のlogoutコマンドでのみ最終的に終了します(通常のSSHセッションと同様) )?

最終的には、このようなコマンドをエイリアスとしてローカルの.bashrcに配置して、必要なときにすばやく実行できるようにしたいと考えています。例としては、SSH経由でリモートサーバーにログインし、リモートサーバーでmuttを開いて電子メールの読み取りまたは送信を行います。

63
user981178

やってみました ssh -t user@server "mail && bash"(またはbashを任意のシェルに置き換えます)?

-tは、bashがインタラクティブシェルとして使用する疑似ttyを作成するために必要です。

98
jsbillings