15

マシンに SSH で接続し、コマンドを実行 (cd またはスクリプトの実行または su) してから、シェルを提供するコマンドが必要です。コマンドを ssh に渡すと、常に終了するようです。

私が探しているもののいくつかの例: 'ssh me@machine1 "./executeMyScript && cd /developmentDirectory"' すると、シェルが返されます。

これを行う理由は、起動時に実行するすべてのタブのコマンドを定義できる mrxvt (タブ付き x 用語) を使用しているためです。同じマシンにいくつかの ssh 接続をしたいのですが、ssh 後に別のことをさせたいと思っています。

-ロブ

ありがとう!

4

5 に答える 5

4

どうですか

    ssh me@machine ./executeMyScript '&&' bash -i

を引用符&&で囲んで、ローカル シェルに飲み込まれるのではなく、リモート マシンに渡されるようにする必要があります。

文字を引用する';'と、開始ディレクトリも変更できます。

    ssh me@machine ./executeMyScript '&&' cd /developmentDirectory ';' bash -i
于 2009-10-27T21:26:14.370 に答える
2

実行したいスクリプトの最後に次のように記述します。

bash -li

これにより、インタラクティブなログイン シェルとして Bash が起動します。転送などを見逃してしまうので完璧ではありTERMませんが、ニーズには十分かもしれません。

十分でない場合は、2 つの個別の ssh 呼び出しを行います。1 つはスクリプトを実行するため、もう 1 つはログインするためです。

于 2009-10-27T21:27:10.360 に答える
2

ssh_config で SendEnv オプションを使用して、特定の環境オプションをローカル マシンからリモート マシンに送信し、続いてリモート ホストの構成でその環境変数をチェックするのはどうですか?

.ssh/special-config-file で:

remotehost:
    SendEnv *

ローカル スクリプト:

RUN_THIS_FIRST_COMMAND=blah
ssh -F special-config-file

リモート .bash_profile:

if [ "$RUN_THIS_FIRST_COMMAND" != "" ] ; then
    $RUN_THIS_FIRST_COMMAND
fi

これらの行のいくつかを確認する必要があるかもしれません.manページからこれをまとめただけで、これまで試したことはありません. 個人的には、このソリューションのためにローカル環境とリモート環境の両方を変更する必要はありません。

于 2009-10-27T22:55:16.900 に答える