Как использовать Perl для запуска другого Perl Scipt, работающего на другом компьютере? - PullRequest
2 голосов
/ 17 февраля 2011

Нужен способ, чтобы скрипт perl, запущенный на одной машине, запускал скрипт perl, запущенный на другой.

Конфигурация удаленного компьютера:

  • CentOS-5.5,
  • он в той же сети, что запрашивающая машина,
  • имеет DNS,
  • порты открытыми (SSH, HTTP)

Вопросы, отзывы, комментарии - просто комментируйте, спасибо !!

Ответы [ 3 ]

5 голосов
/ 17 февраля 2011

Это то, что вы хотите?

system("ssh user@remotemachine perl <remote script's full path>");

запустит скрипт на удаленной машине.

Вы можете захотеть ssh без пароля, проверьте: http://linuxproblem.org/art_9.html

3 голосов
/ 17 февраля 2011

Как уже упоминалось @Nylon Smile, вы можете использовать system для вызова системного клиента ssh. Если вы хотите сделать это, не полагаясь на внешние двоичные файлы (в частности, потому что вы хотите по-другому обрабатывать аутентификацию по паролю), попробуйте Net::SSH::Perl, доступный из CPAN.

use Net::SSH::Perl;

my $ssh = Net::SSH::Perl->new('host');
$ssh->login('username', 'password');
my ($stdout, $stderr, $exit_code) = $ssh->cmd(
    'perl some_script.pl --with=some_args',
    'optionally, some stdin for that script'
);

Net :: SSH :: Perl может быть немного трудной для установки, но есть несколько других модулей CPAN (большинство из которых основаны на установленном OpenSSH), и с ними немного проще работать, предоставляя аналогичный API , Смотрите также Net::SSH и Net::OpenSSH.

2 голосов
/ 17 февраля 2011

Приведенные выше ответы подходят для одноразовых, но если вы много делаете такого рода вещи, вы можете захотеть взглянуть на какую-нибудь систему обмена сообщениями, такую ​​как AMPQ (например, RabbitMQ), и настроить прослушиватели очереди.

...