web-dev-qa-db-ja.com

sshを接続してシェルスクリプトを実行する方法

サーバーにシンプルなアプリがあり、コンピューターから自動的に実行したい。このスクリプトを介してサーバーに正常に接続できます。

spawn ssh -t login@ip
expect "password"
send "password\r"
interact

しかし、アプリでディレクトリをフォルダに変更することはできません。私はそうしようとしました:

spawn ssh -t login@ip bash -c "cd /var/app"

など:

spawn ssh -t ssh login@ip 'cd /var/app && exec bash -l'

など:

spawn ssh -t login@ip
expect "password"
send "password\r"
cd var/app
exec bash
interact

およびその他のバリアント...

しかし、スクリプトを介しては動作しません。スクリプトがローカルマシン(サーバーではなく)のディレクトリを変更するためです。この問題を解決できますか?清聴ありがとうございました。

1
Mello007

sshを介して複数のコマンドを実行する必要がある場合は、次のようなサブシェルを使用します。

ssh user@Host bash -c 'pwd ; dir && ls'
1
dessert