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

У меня есть 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"

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

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

Спасибо, Лалит

3 ответа

Решение

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

ssh you@yours.com "cd /home && ls -l"

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

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

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

ssh user@remote.host bash -c "'
  cd Desktop/testfolder
  java -cp xyz.jar Main
'"
Другие вопросы по тегам