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


58

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

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

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

最終的には、ローカルの.bashrcにエイリアスとしてこのようなコマンドを配置できるようにして、必要なときにすぐに実行できるようにします。例としては、SSHを介してリモートサーバーにログインし、リモートサーバーでmuttを開いてメールを読んだり送信したりします。


メールステータスを表示した後、リモートシェルに留まるとはどういう意味ですか?これは、mailコマンドの実行後にsshを実行することと同等ではないでしょうssh remote@server mail ; ssh remote@serverか?また、端末を必要とするリモートで実行されたコマンドは、sshで正しく動作しませんか?
mkc 14年

まあ、それはコマンドを実行してからリモートシェルを取得するように動作するようですが、1つのSSH接続を開いてコマンドを実行し、SSH接続を閉じてから別のSSH接続を開くことでそれを行います。これをすべて単一の最初の接続で行う方法はありますか?また、これでもコマンドでプログラムを実行できるようにはなりません。
user981178 14年

回答:


90

試しましたssh -t user@server "mail && bash"か(またはbash、好きなシェルに置き換えてください)?

これ-tは、bashが対話型シェルとして使用する擬似ttyを作成するために必要です。


1
私は認めますが、おそらくor mutt内で実行することを望み、その後自由にアタッチおよび再アタッチできます。さらに、必要な数の追加のシェルを実行できます。tmuxscreen
jsbillings 14年

1
さて、私はこのコマンドでさまざまな動作を見つけています。上記のように(回答で)使用すると、メールボックスのステータスを表示してからログアウトするだけでなく、接続が閉じられたことも表示されます。上記のように使用しますが、たとえば、メールの代わりにnanoを使用すると、nanoセッションが開き、終了時にリモートbashシェルに戻ります。リモートbashシェルはのexit代わりに終了する必要がありlogoutます。まだmutt(または同様の)でテストできません。
user981178 14年

ない-tオプションは、セキュリティ上の懸念の任意の並べ替えを生成しますか?これは以前に使用したことがありません。
user981178 14年

私の知る限り、-tはセキュリティの問題を引き起こしません。をに置き換えてみ&&ました;か?
brm 14年

ゼロ以外の終了ステータスで終了するコマンドは、シェルロジックにより、2番目のコマンドを実行しません。
jsbillings
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.