web-dev-qa-db-ja.com

シェルスクリプトを使用したリモートマシン上の複数のコマンド

JavaプログラムDesktop/testfolder/xyz.jarリモートマシン。同じフォルダーに構成ファイルがあります。マシンにSSHで接続するとき、次のことを行います。

"ssh user@remote Java -cp Desktop/testfolder/xyz.jar Main"

ここでの問題は、ホームファイルにあるため、構成ファイルがパスにないため、プログラムが構成を読み取れないことです。

最初にそのフォルダーに移動してから、そのフォルダーからプログラムを実行します。シェルスクリプトでこれを実行した場合

"ssh user@remote cd Desktop/testfolder"
"Java -cp xyz.jar Main"

最初のステートメントが実行され、2番目のステートメントが実行されると、リモートマシンではなく現在のマシンで実行されます。

コマンドを1つだけ実行できますか、または他の解決策がありますか?

27
Lalith

次のようなものを試してください:

ssh [email protected] "cd /home && ls -l"
42
Robin

コマンドをセミコロンで区切ってみてください:

ssh user@remote "cd Desktop/testfolder ; Java -cp xyz.jar Main"
16
Trey Hunner

読みやすくするためにコマンドを複数行に分割する場合は、次のようにbashコマンドにコマンドのリストを渡すこともできます。

ssh [email protected] bash -c "'
  cd Desktop/testfolder
  Java -cp xyz.jar Main
'"
4
Dirk