0

我试图在 Scala 中运行一个命令,这个命令是一个 ssh 调用,需要在服务器机器内执行一个 cmd 行,它看起来像

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

如果我从 Scala 打印这个字符串并直接在 shell 中运行它,它可以正常工作,但是使用

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 产生我试图直接在 shell 中运行的查询, cmd !应该运行相同的命令

我在开发过程中使用此解决方案,因为在生产中代码将直接运行到服务器中,我不需要 ssh 调用,但对于开发,我需要从我的电脑上运行服务器上的“程序”

解决了

删除引号就足够了,ssh 将连接参数之后的内容作为在服务器上运行的命令

4

1 回答 1

0

使用格式化字符串可以帮助解决此类问题

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

var cmd = """sshpass -p $server_pass ssh $server_user@$server_ip \$nestedcmd"""
于 2016-02-29T17:11:21.080 回答