Несколько команд на удаленном компьютере с использованием оболочки script

У меня есть Java-программа Desktop/testfolder/xyz.jar на удаленной машине. Он имеет файл конфигурации в той же папке. Когда я SSH в машину, я делаю:

"ssh [email protected] java -cp Desktop/testfolder/xyz.jar Main"

Проблема здесь в том, что файл конфигурации не находится в пути, так как мы находимся в домашней папке, поэтому моя программа не может прочитать конфигурацию.

Я хочу сначала зайти в эту папку, а затем запустить программу из этой папки. В сценарии оболочки, если я сделал это

"ssh [email protected] cd Desktop/testfolder"
"java -cp xyz.jar Main"

он выполняет первый оператор, а когда выполняется второй оператор, он выполняется на моем текущем компьютере, а не на удаленном.

Можем ли мы сделать только одну команду, или есть другие решения для этого?

Ответ 1

Попробуйте что-то вроде этого:

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

Ответ 2

Вы можете попробовать разделить команды точкой с запятой:

ssh [email protected] "cd Desktop/testfolder ; java -cp xyz.jar Main"

Ответ 3

Если вы хотите разделить свои команды на несколько строк для удобства чтения, вы также можете передать список команд команде bash следующим образом:

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