【问题标题】:Escaping karate.fork Commands转义 karate.fork 命令
【发布时间】: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


【解决方案1】:

我不得不删除双引号,似乎它们与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
]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-29
    • 2013-04-05
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    相关资源
    最近更新 更多