Выполнить удаленный Perl-скрипт на Windows-боксе из Linux-бокса

Недавно мы установили SSH на наших компьютерах с Windows, чтобы мы могли избавиться от необходимости монтировать диски на наших компьютерах с Linux. Мы используем Pentaho, и я пишу сценарий оболочки, который из коробки 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 не запускается. Я могу сделать все эти шаги вручную через оболочку, но не могу заставить их работать в форме сценария. Как примечание, единственный способ, которым я смог выполнить сценарии perl - это наличие оболочки в каталоге, в котором находится сценарий perl.

2 ответа

Решение

Вам нужно использовать либо точку с запятой, чтобы завершить свои операторы, либо выполнить с одним оператором. попробуйте следующее:

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"

В командной оболочке Windows вы можете использовать && как в Unix-оболочке. Если вы ожидаете, что первая команда будет успешной,

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

буду работать.

Другие вопросы по тегам