Несколько команд на удаленном компьютере с использованием сценария оболочки - PullRequest
26 голосов
/ 16 октября 2010

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

42 голосов
/ 16 октября 2010

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

ssh you@yours.com "cd /home && ls -l"
16 голосов
/ 16 октября 2010

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

ssh user@remote "cd Desktop/testfolder ; java -cp xyz.jar Main"
4 голосов
/ 11 октября 2016

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

ssh user@remote.host bash -c "'
  cd Desktop/testfolder
  java -cp xyz.jar Main
'"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...