我们最近在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脚本的唯一方法是在 in perl脚本所在的目录中。
答案 0 :(得分: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"
答案 1 :(得分:0)
在Windows命令shell中,您可以像在Unix-shell中一样使用&&
。如果您希望第一个命令成功,
ssh -t xxxxx@xxxxx "cd /path/to/script/ && /path/to/perl.exe HelloWorld.pl"
会奏效。