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;

我需要通过SSH使用sudo远程运行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.

但是我怎么能做同样的,而包括另一个脚本作为依赖?

谢谢大家。

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

如果你不喜欢这样做,也许Object::Remote可以帮助你。但是不要问我如何使用它,我只听过关于它的精彩演讲。

最新更新