web-dev-qa-db-ja.com

サーバーへのSSH、コマンドの実行、および接続の維持

さまざまなタブで端末を開き、各タブでsshを使用してサーバーにログオンし、各タブでコマンドを実行するスクリプトを作成します。例:htop

以下のスクリプトは、サーバーにすべてログインしている4つのタブを持つターミナルを開きます。しかし、cmd=行にhtopコマンドを追加しようとすると、機能しなくなります...

#bin/bash

tab="--tab"
cmd="bash -c 'ssh user@Host';bash"
foo=""

for i in 1 2 3 4; do
      foo+=($tab -e "$cmd")         
done

gnome-terminal "${foo[@]}"

exit 0

私はこれを試しました...

cmd="bash -c 'ssh user@Host htop';bash"

...ssh --helpは、sshの構文が次のようになっているためです。

使用法:ssh [user @] hostname [コマンド]

12
Red

最も単純な形式では:

ssh -t user@Host "command; bash"

-tはここで重要な部分です。ホストがプロセスに仮想端末を割り当てるように強制します。これにより、ホストは開いたままになります。

サーバーの負荷でhtopを実行したい場合は、最後のbashを省略できますが、htopを終了すると、ローカル端末に戻ることになります。

13
Oli