【问题标题】:Passing a script and string over SSH通过 SSH 传递脚本和字符串
【发布时间】:2015-03-31 19:11:13
【问题描述】:

我正在尝试通过 SSH 运行带有字符串值的 perl 脚本,但我无法让它工作。

我的脚本如下所示:

ssh user@linux /home/user/script.pl "value1 value2 value3"

脚本将执行,但由于某种原因,传递给它的唯一值是 value1 而不是整个字符串值。它认为这是因为双引号在通过 SSH 传输时被丢弃?。

任何人都可以对此有所了解吗?干杯。

【问题讨论】:

  • 最好向我们展示代码。
  • 你需要展示 perl 代码以便我们理解问题。
  • 这不是一个真正的 perl 问题,我实际上是从 AS400 上的控制语言程序运行此代码。我在 AS400 上使用 QSHELL 在 Linux 机器上调用 perl 脚本。代码如下所示: QSH CMD('ssh user@linuxserv /home/user/myscript.pl "value1 value2 value3"')

标签: linux perl ssh ibm-midrange


【解决方案1】:

问题是最初的引号集被用于调用命令的 shell 扩展,所以实际发生的是:

ssh user@linux /home/user/script.pl "value1 value2 value3"

最后是:

/home/user/script.pl value1 value2 value3

从远程系统运行时。

您需要对引号进行转义,以便它不会在本地解析,然后在远程端进行解释。

要转义引号,您可以这样做:

ssh user@linux /home/user/script.pl \"value1 value2 value3\"

【讨论】:

  • 谢谢Petesh,我怀疑你是正确的。我会试一试,看看会发生什么。
【解决方案2】:

通常更容易将像STDIN 这样的较大值传递到远程脚本中。这样一来,它就不会被命令行解析器或 shell 吃掉或破坏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 2013-10-22
    相关资源
    最近更新 更多