Perl的。从远程服务器获取文件,仅核心模块

时间:2012-12-10 13:45:26

标签: perl file fetch

我需要帮助:有没有办法只使用perl 5.8.8的核心模块从远程服务器获取文件? File :: Fetch仅从5.9成为核心模块。

3 个答案:

答案 0 :(得分:4)

这一直出现。看看经典yes, even you can use CPAN。如果您能够创建和运行Perl脚本,那么您还可以将模块放在本地目录中并使用它。仅使用核心模块的要求完全是人为的。

在您的情况下,LWP::Simplegetstore()功能会执行您想要的操作。虽然它在技术上不是核心,但默认包含LWP::Simple许多Perl发行版。你可能已经拥有它了。

更新:所以,您想在1000台服务器上执行此操作吗?无需在每台服务器上手动安装模块。 Use CPAN programmatically下载并安装您需要的模块(需要进行一些调整才能让CPAN在本地而不是在根模块库中安装它)。此外,Leon Timmermans建议对模块进行加脂处理是另一种选择。

如果你真的不想这样做,那么基本上答案是否定的:没有简单的方法通过HTTP使用相应的模块或系统命令获取远程文件(I不考虑编写自己的HTTP客户端是一个简单的方法,但如果它适用于你就没问题了。)

我看到的唯一其他潜在解决方案是针对您的问题的不同方法,例如:

  • 在单个位置使用脚本来获取文件,然后分发 通过FTP向所有1000台服务器发送。
  • 或者,将文件放在FTP服务器上,然后使用简单的Perl 每个服务器上的脚本通过FTP获取它。

答案 1 :(得分:2)

正如Dan已经说过,是的,即使你可以使用CPAN 。他的链接没有提及的一种方法是将其写为正常的CPAN使用分布,然后fatpack。 Fatpacker将脚本与其所有(纯perl)依赖项组合在一起,创建一个易于分发的文件。

答案 2 :(得分:1)

您可以使用:

my $wgetoutput = `wget "$myFileToGet"`;

反引号(`)中的东西将被赋予默认shell,因此您可以在那里调用任何您想要的(并且被允许)。 警告:$ myFileToGet可能会有“&& rm -rf *”之类的东西,所以不要忘记消毒!