Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Perl在HTTP代理后面FTP文件_Perl_Proxy_Ftp_Net Ftp - Fatal编程技术网

使用Perl在HTTP代理后面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防火墙选项

我已经编写了一个简单的Perl脚本来列出、获取mtime,然后获取文件(基于mtime)。这是使用RHEL5/6中提供的Perl Net::FTP模块完成的

我的问题是,我现在必须调整此脚本以传输HTTP squid代理(而不是FTP代理)后面的文件

如果在为这些程序设置了相关的代理配置文件后,使用像wget或lftp这样的Linux shell命令,我可以通过ftp传输这些文件

在Perl中有没有一种不用调用系统(shell)命令就可以做到这一点的方法。我已经尝试设置Net::FTP防火墙选项(见下文),但我相信这仅适用于我们没有或没有使用的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