使用Perl在HTTP代理后面FTP文件
我已经编写了一个简单的Perl脚本来列出、获取mtime,然后获取文件(基于mtime)。这是使用RHEL5/6中提供的Perl Net::FTP模块完成的 我的问题是,我现在必须调整此脚本以传输HTTP squid代理(而不是FTP代理)后面的文件 如果在为这些程序设置了相关的代理配置文件后,使用像wget或lftp这样的Linux shell命令,我可以通过ftp传输这些文件 在Perl中有没有一种不用调用系统(shell)命令就可以做到这一点的方法。我已经尝试设置Net::FTP防火墙选项(见下文),但我相信这仅适用于我们没有或没有使用的FTP代理 到目前为止,我的代码与此类似(为了清楚起见,我省略了错误处理): 如果我打开被动模式,我会得到同样的错误。如果我不提供防火墙选项,我也会遇到类似的超时错误:使用Perl在HTTP代理后面FTP文件,perl,proxy,ftp,net-ftp,Perl,Proxy,Ftp,Net Ftp,我已经编写了一个简单的Perl脚本来列出、获取mtime,然后获取文件(基于mtime)。这是使用RHEL5/6中提供的Perl Net::FTP模块完成的 我的问题是,我现在必须调整此脚本以传输HTTP squid代理(而不是FTP代理)后面的文件 如果在为这些程序设置了相关的代理配置文件后,使用像wget或lftp这样的Linux shell命令,我可以通过ftp传输这些文件 在Perl中有没有一种不用调用系统(shell)命令就可以做到这一点的方法。我已经尝试设置Net::FTP防火墙选项
Net::FTP: new(111.111.111.111, Port => 21, Passive => 1, Debug => 1)
main crashed: Can't ftp to 111.111.111.111: Net::FTP: connect: Connection timed out
在阅读了Net::FTP上的手册后,我非常确定它本身不支持通过http代理进行传输。只是想知道什么是实现列出远程文件的mtime,然后用Perl获取它们的最佳方法
谢谢
Paul如果你在代理后面尝试,会发生什么?是否有错误消息?请始终提供错误消息,否则没有人可以帮助您。您可能应该使用,而不是使用Net::FTP。您可以使用它获取启动“ftp://”的URL,还可以告诉它使用HTTP代理。感谢Grant,我将查看LWP。如果您使用ftp:protocol URI,您仍然需要定义ftp代理。
Net::FTP: new(111.111.111.111, Port => 21, Passive => 0, Firewall => proxy.xx:3128, Debug => 1)
Net::FTP>>> Net::FTP(2.77)
Net::FTP>>> Exporter(5.63)
Net::FTP>>> Net::Cmd(2.29)
Net::FTP>>> IO::Socket::INET(1.31)
Net::FTP>>> IO::Socket(1.31)
Net::FTP>>> IO::Handle(1.28)
Net::FTP=GLOB(0x2640e60): Timeout at /etc/transfer/transfer_get.pl line 106
Net::FTP: new(111.111.111.111, Port => 21, Passive => 1, Debug => 1)
main crashed: Can't ftp to 111.111.111.111: Net::FTP: connect: Connection timed out