Scala: правильная команда оболочки не работает с использованием ProcessBuilder

Я пытаюсь запустить команду внутри Scala, эта команда является вызовом ssh, который требует выполнения строки cmd внутри обслуживающей машины, похоже,

sshpass -p PSW ssh USER@IP "/absolute_path/program -input /absolute_path/filename"

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

cmd !

СЕРВЕР возвращает ошибку

bash: /absolute_path/program -input /absolute_path/filename: No such file or directory

кто-то может сказать мне, как исправить, пожалуйста? благодарю вас

ОБНОВЛЕНО

var nestedcmd = "/absolute_path/program" +
  " -input "+ server_dir +"/"+ filename

var cmd = "sshpass -p "+ server_pass +
  " ssh "+ server_user +"@"+ server_ip +
  " \""+ nestedcmd + "\""

println(cmd)  
cmd !

println создает запрос, который я пытаюсь запустить непосредственно внутри оболочки, cmd! должен запустить ту же команду

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

РЕШИТЬ

Достаточно было удалить кавычки, ssh принимает то, что идет после параметров соединения, в качестве команд для запуска на сервере.

1 ответ

Использование отформатированных строк может помочь с такими проблемами

var nestedcmd = """/absolute_path/program -input $server_dir/filename"""

var cmd = """sshpass -p $server_pass ssh $server_user@$server_ip \$nestedcmd"""
Другие вопросы по тегам