Выполнить удаленный 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"
буду работать.