在Perl中发送ftp句柄的输入

时间:2013-10-24 03:46:44

标签: perl ftp

我正在尝试向Perl中的ftp打开句柄发送输入。我的脚本是

open (CALC, "|ftp abc.cde.com");
print "hello";
close CALC;

该网站仅接受匿名用户作为输入。我尝试过使用$guess = <STDIN>;,但它无法正常工作。 我如何强制Perl询问用户以及硬编码用户?

1 个答案:

答案 0 :(得分:4)

使用this模块可能会节省大量代码和挫败感。 Net :: FTP是一个在Perl中实现简单FTP客户端的类,如RFC959中所述。它为RFC959命令的子集提供包装器。

use Net::FTP;

$ftp = Net::FTP->new("some.host.name", Debug => 0)
  or die "Cannot connect to some.host.name: $@";

$ftp->login("$user","$Password")
  or die "Cannot login ", $ftp->message;

$ftp->cwd("/pub")
  or die "Cannot change working directory ", $ftp->message;

$ftp->get("that.file")
  or die "get failed ", $ftp->message;

$ftp->quit;

对于用户提示,如果您可以使用STDIN,则以下情况应该有效。

print "Enter username or press enter for anonymous: ";
my $user = <STDIN>; 
chomp $user;

if (length($user //= '')) {$user="anonymous";$password="INSERTPASSWORD"}
else {
print "Enter password for $user: ";
my $password = <STDIN>; 
chomp $password;
}

我会在您的脚本中尽早请求用户和密码,然后您可以将其传递给$ ftp对象。使用该模块比使用exec或管道更好,因为它将内置错误报告,并且很容易为OO。

希望如果您需要更多帮助,这会有所帮助和评论。