我正在尝试使用 perl 编写一个 FTP 客户端,以使用被动模式从 IIS 7.5 FTP 服务器传输文件。
我已经按照说明配置了 FTP 服务器,并且还配置了 Windows 防火墙以允许这种类型的流量。我已经通过检查确保日志中没有被阻止的数据包来验证防火墙的行为是否正确。我已经验证了 FTP 控制通道正在端口 21 上打开。
我相信 IIS 会告诉客户端在被动模式下连接哪个端口,而 IIS 拒绝允许此连接。
perl 日志如下所示:
C:\cygwin\Perl\lib\FMT>perl FTPTest.pl
Net::FTP>>> Net::FTP(2.77)
Net::FTP>>> Exporter(5.64_01)
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(0x20abac0)<<< 220 Microsoft FTP Service
Net::FTP=GLOB(0x20abac0)>>> USER ftpuser
Net::FTP=GLOB(0x20abac0)<<< 331 Password required for ftpuser.
Net::FTP=GLOB(0x20abac0)>>> PASS ....
Net::FTP=GLOB(0x20abac0)<<< 230 User logged in.
Net::FTP=GLOB(0x20abac0)>>> CWD /Logs
Net::FTP=GLOB(0x20abac0)<<< 250 CWD command successful.
Net::FTP=GLOB(0x20abac0)>>> PASV
Net::FTP=GLOB(0x20abac0)<<< 227 Entering Passive Mode (xx,xxx,xxx,xxx,160,41).
Net::FTP=GLOB(0x20abac0)>>> RETR filename.txt …
Run Code Online (Sandbox Code Playgroud)