ftp使用perl脚本
发布网友
发布时间:2022-04-23 09:46
我来回答
共1个回答
热心网友
时间:2023-05-22 16:05
#!/usr/bin/perl -w
use Net::FTP;
use POSIX qw(strftime); #这个是我当时用来抓时间的可以省略
my $remotefile;
my $localfile;
my $dir = 'E:/CDR/trunk/'; #本地存放路径
my $host;
my $password;
my $ftp;
#1. get begin
$host='192.168.1.105'; #被FTP的远程IP
$password='hahahaha'; #ftp的密码
$ftp=Net::FTP->new($host) or die "cannot connect to ftp server $host!\n";
$ftp->login("root",$password);
$ftp->cwd("/AP/CDR"); #远程抓取的路径
if ( -d "$dir/$host" ) { #这个条件句是用来判断本地目录192.168.1.105是否存在,不存在就创建
}
else {
system "mkdir -p $host";
}
print "the list of /ap/cdr from $host!!\n"; #列出远程目录的所以非目录文件,并抓取符合条件的文件
&list("/");
$ftp->quit;
#1. get end
sub list() #list类,判断文件类型的核心
{
my $current = $_[0];
my @subdirs;
$ftp->cwd($current);
my @allfiles = $ftp->ls();
foreach (@allfiles){
if(&find_type($_) eq "d"){ #如果是目录则打印并忽略掉
print "this floder!!\n";
}
else{
my $tmp = "$_";
print $tmp."\n";
if($tmp=~/adf/){ #判断包含adf则抓取,当然可以扩展正则方法
$remotefile=$tmp;
$localfile = "$dir/$host/".$remotefile;
$ftp->binary();
$ftp->get($remotefile,$localfile)
or die "Could not get remotefile:$remotefile\n";
print "download $remotefile complete from $host!!\n";
}
}
}
}
sub find_type{
my $path = shift;
my $pwd = $ftp->pwd;
my $type = '-';
if ($ftp->cwd($path)) {
$ftp->cwd ($pwd);
$type = 'd';
}
return $type;
}
老大 我自己执行是可以的, 把分给我吧