package MYFTP; use Net::FTP; sub new { my $class = shift; #一个空的引用 my $ref = {}; #将引用和对象绑定 bless($ref,$class); #返回引用 return $ref; } #FTP下载文件 sub DownLoadFtpFile { my $ref = shift; my $FtpServer = shift; my $Ftpport = shift; my $Ftpuser = shift; my $FtpPassWord = shift; my $FtpLocalSavePath = shift; my $FtpRemotePath = shift; my @FtpDownloadFile = @_; print "\nFtp 正在建立连接 IP:$FtpServer 端口:$Ftpport 用户名:$Ftpuser 密码:$FtpPassWord \n"; my $ftp = Net::FTP->new($FtpServer, Port=>$Ftpport, Debug => 0, Timeout => 600) or die "Cannot connect.\n"; print "\n连接成功,开始登陆.......\n"; $ftp->login($Ftpuser, $FtpPassWord) or die "Could not login.\n"; print "\n登陆成功,开始下载文件.......\n"; $ftp->cwd($FtpRemotePath) or die "Cannot change working directory.\n"; #文件全部下载成功退出死循环 while(@FtpDownloadFile) { my $Index = 0; my $ArraySize = @FtpDownloadFile; foreach my $File (@FtpDownloadFile) { my $FtpDownLocalSavePath = $FtpLocalSavePath . "/$File"; my $Return = $ftp->get($File, $FtpDownLocalSavePath); if($Return eq undef) { print "\n下载$File文件失败\n"; next; } print "\n下载$File文件成功\n"; delete $FtpDownloadFile[$Index]; $Index++; } } print"\n全部下载成功.......\n"; $ftp->quit; } #FTP上传载文件 sub UpLoadFtpFile { my $ref = shift; my $FtpServer = shift; my $Ftpport = shift; my $Ftpuser = shift; my $FtpPassWord = shift; my $FtpRemotePath = shift; my @FtpUploadFile = @_; print "\nFtp 正在建立连接 IP:$FtpServer 端口:$Ftpport 用户名:$Ftpuser 密码:$FtpPassWord \n"; my $ftp = Net::FTP->new($FtpServer, Port=>$Ftpport, Debug => 0, Timeout => 600) or die "Cannot connect.\n"; print "\n连接成功,开始登陆.......\n"; $ftp->login($Ftpuser, $FtpPassWord) or die "Could not login.\n"; print "\n登陆成功,开始上传文件.......\n"; $ftp->cwd($FtpRemotePath) or die "Cannot change working directory.\n"; #文件全部下载成功退出死循环 while(@FtpUploadFile) { my $Index = 0; foreach my $File (@FtpUploadFile) { my $Return = $ftp->put($File); if($Return eq undef) { print "\n上传$File文件失败\n"; next; } print "\n上传$File文件成功\n"; delete $FtpUploadFile[$Index]; $Index++; } } print"\n全部上传成功.......\n"; $ftp->quit; } #模块结束标识 1;
use MYFTP; my $server = "10.92.209.156"; my $port = "21"; my $user = "root"; my $pw = "root"; my $LocalSavePath = "E:/11111/Test"; my $RemotePath = "/home/songbaisen"; my @DownloadFile; push @DownloadFile,"hell.pl"; push @DownloadFile,"CELL0.csv"; my $Ftp = MYFTP->new(); #&DownLoadFtpFile($server,$port,$user,$pw,$LocalSavePath,$RemotePath,@DownloadFile); $Ftp->UpLoadFtpFile($server,$port,$user,$pw,$LocalSavePath,$RemotePath,@DownloadFile);
本文出自 “风清扬song” 博客,请务必保留此出处http://2309998.blog.51cto.com/2299998/1358501
原文:http://2309998.blog.51cto.com/2299998/1358501