1

我们最近在我们的 Windows 机器上设置了 SSH,因此我们可以消除在我们的 Linux 机器上安装磁盘的需要。我们正在使用 Pentaho,我正在编写一个 shell 脚本,它将从 Linux 机器通过 SSH 连接到 Windows 机器并执行 perl 脚本。

我已经能够以 SSH 方式写入 windows 框并切换到包含我需要执行的 Perl 脚本的目录,我只是不知道如何实际执行它们。

这就是我所拥有的:

#!/bin/sh
ssh -t xxxxx@xxxxx "cd /path/to/script/ /path/to/perl.exe HelloWorld.pl"

我也试过:

#!/bin/sh
ssh -t xxxxx@xxxxx "cd /path/to/directory/with/perl/script" \
                   "/path/to/perl.exe HelloWorld.pl"

两次尝试都会导致短暂的延迟,然后“与 xxxxx 断开连接”,并且 perl 无法运行。我可以通过 shell 手动完成所有这些步骤,但似乎无法让它们以脚本形式工作。请注意,我能够执行 perl 脚本的唯一方法是,如果在perl 脚本所在的目录中有 shell。

4

2 回答 2

1

您需要使用分号来结束您的语句,或使用一个语句执行。尝试以下操作:

ssh xxxxx@xxxxx "cd /path/to/script/; /path/to/perl.exe HelloWorld.pl"

或者:

ssh xxxxx@xxxxx "/path/to/perl.exe /path/to/script/HelloWorld.pl"
于 2012-06-12T20:44:03.163 回答
0

在 Windows 命令 shell 中,您可以&&像在 Unix-shell 中一样使用。如果您希望第一个命令成功,

ssh -t xxxxx@xxxxx "cd /path/to/script/ && /path/to/perl.exe HelloWorld.pl"

将工作。

于 2012-06-12T21:21:15.403 回答