我在perl中使用Net :: FTP来进行一些文件传输.当我运行以下代码时: -
使用IP地址有什么问题吗?我是否正确在主机领域提供此功能?
use strict;
use Net::FTP;
my $host = "10.77.69.124";
my $user = "administrator";
my $password = "Password";
my $f = Net::FTP->new($host, Debug =>0) or die "Can't open $host\n";
$f->login($user, $password) or die "Can't log $user in\n";
Run Code Online (Sandbox Code Playgroud)
代码无法连接到远程主机.为什么会这样?这不应该与提供的IP地址一起工作$host吗?
Net :: FTP的构造函数允许您传递单个标量值或一组主机来尝试.此字段的值应与IO :: Socket :: INET中的PeerAddr (主机名或IP 地址)相同.
通过指定Debug仔细查看发生的情况.如果您位于防火墙或NAT设置之后,您可能还应将Passive设置为非零值,并确保通过打印$ @来检查构造函数是否失败.
my $ftp = Net::FTP->new(Host=>$host, Debug=>1, Passive=>1) || die $@;
Run Code Online (Sandbox Code Playgroud)
如果构造函数成功,您可能想要检查是否有任何其他方法失败:
$ftp->login($user, $pass) || die $ftp->message;
$ftp->cwd($path) || die $ftp->message;
Run Code Online (Sandbox Code Playgroud)
顺便说一下:如果您不确定是否使用了正确的主机参数,可以向Net :: FTP询问它尝试连接的主机:
print $ftp->host, "\n";
Run Code Online (Sandbox Code Playgroud)
如果仍然无效,请提供您的申请的详细输出.
希望这可以帮助.