www.pudn.com > filecollector.rar > ftp.pl
#!/usr/local/perl5/bin/perl use Getopt::Long; use Net::FTP; my $usage = "\nUsage:$0 \n\t-h \n\t-u \n\t-p \n\t-f \n\t-r \n\t-o -get[-put]\n\n"; my ($host,$user,$pass,$rdir,$dest,$file,$p_flag,$g_flag); GetOptions("h:s"=>\$host,"u:s"=>\$user,"p:s"=>\$pass,"r:s"=>\$rdir,"o:s"=>\$dest,"f:s"=>\$file,"get"=>\$g_flag,"put"=>\$p_flag); die "$usage" if (!($host && $user && $pass && $rdir && $file)); my $source_file = $rdir."/".$file; my $dest_file; if (! $dest) { $dest_file = $file; } else { $dest_file = $dest."/".$file; } print "\nFtp host:$host\n"; my $ftp = Net::FTP->new($host,Timeout=>60,Debug=>0) || die "Can't connect: $@\n"; print "\nLogin:$user\nPassword:$pass\n"; $ftp->login($user,$pass) || die "Couldn't authenticate, even with explicit username and password.\n"; if( $g_flag) { my @a_source_file = $ftp->ls($source_file); my ($v_source_file , $v_dest_file ); foreach $v_source_file ( @a_source_file ){ print "test: $v_source_file \n"; $v_source_file =~ m/\/*([\w\.]+)\s*$/ ; $v_dest_file = $dest."/".$1; print "\nGet File:$v_source_file from $host to $v_dest_file\n"; $ftp->get($v_source_file, $v_dest_file) || die "Can't get $v_source_file : $!\n"; } } if ($p_flag){ print "\nPut File:$source_file to host $host@$source_file \n"; $ftp->put($dest_file, $source_file) || die "Can't put $file : $!\n"; } $ftp->quit(); exit 0;