Perl - 通过包含require指令的SSH远程运行脚本

时间:2014-07-06 18:36:21

标签: perl ssh require

考虑以下两个脚本:

main.pl

#!/usr/bin/env perl

require 'lib.pl';
testSub('Hello World');

lib.pl

sub testSub
{
    my ($input) = @_;
    print $input, "\n";
}
1;

我需要使用sudo通过SSH远程运行main.pl脚本,同时包含lib.pl作为依赖项。

我知道如何使用sudo通过SSH运行单个Perl脚本:

$ ssh user@host 'sudo perl' < /path/to/local/perl/script

但是,在这种情况下,会立即引发以下错误:

Can't locate libs.pl in @INC (@INC contains: /usr/lib/perl5/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/lib/perl5/site_perl/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/vendor_perl .) at - line XX.

但是,如果将另一个脚本包含为依赖项,我怎么能这样做呢?

提前全部谢谢。

1 个答案:

答案 0 :(得分:1)

Perl只能查看包含的本地文件系统,不能通过ssh通道回调来获取数据。因此,您需要在执行程序之前将libs.pl传输到另一端,或者只是将其内容直接包含在您的程序中。

如果您不喜欢这样做,也许Object :: Remote可以帮助您。但是不要问我如何使用它,我只是听到了很好的谈论它。