【发布时间】:2022-10-06 00:47:40
【问题描述】:
我正在尝试使用karate.fork 在空手道中运行以下命令
ssh -o ProxyCommand=\"ssh -W %h:%p -i ~/.ssh/id_rsa root@myjumphost\" -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no -o PasswordAuthentication=no root@finaldest echo test
我已将其分解为一个数组以传递给karate.fork,如下所示:
[
ssh,
-o,
ProxyCommand=\"ssh -W %h:%p -i ~/.ssh/id_rsa root@myjumphost\",
-i,
~/.ssh/id_rsa,
-o,
StrictHostKeyChecking=no,
-o,
PasswordAuthentication=no,
root@finaldest,
echo test
]
然后像这样运行命令:
* karate.fork(args) 其中args 是上面提到的数组
当我将它粘贴到终端并手动运行时,该命令有效,但是当使用karate.fork 运行时,我得到
zsh:1: no such file or directory: ssh -W finaldest:22 -I ~/.ssh/id_rsa root@myjumphost
kex_exchange_identification: Connection closed by remote host
我尝试在ProxyCommand 中的\" 之前添加一些反斜杠,但没有多少反斜杠可以解决此问题。我想我误解了karate.fork 正在做什么来运行命令,是否对给定的输入进行了一些内部解析或操作?当我使用useShell: true 时,我能够让这个命令工作,但是这个选项对我来说破坏了其他测试,所以我真的很想避免它。
-
不用多挖,也许
echo test应该在两条单独的线上?是的,这可能很难弄清楚。如果您还没有,请参考这个答案:stackoverflow.com/a/62911366/143475 - 如果一切都失败了,请使用 java interop 推出您自己的实用程序 -
@Peter Thomas 关键实际上是删除 ProxyCommand 选项中的双引号,我猜空手道正确地引用了这个或在幕后做某事
标签: karate