perlftp
❶ perl ftp到服务器,然后取得服务器的时间
FTP不提供反馈系统时间的办法,如果你有文件上传权限,可以MKDIR建立一个文件夹,然后DIR检查文件夹的日期。
❷ 如何用perl下载ftp地址的文件
my $ftpserver="10.120.143.229";
print ("[$time]:开始链接FTP服务器$ftpserver\n");
my $ftp =Net::FTP->new($ftpserver,Timeout=>200) or print "Can't Connect Ftpserver\n";#||die "[$time]Can't Connect Ftpserver $_ ";
sleep 5;
my $rc = $ftp->login($usr,$passwd);
my $time = localtime(time());
unless($rc){
print("[$time]:接口机登陆失败。\n");
return 1;
}
print "[$time]:接口机登陆成功。\n";
$ftp->get("$DATE_TODAY_L2$file1","D:\\ETL\\DATA\\rub\\$DATE_TODAY_L2$file1");
$ftp->quit;
❸ 请教个perl的ftp模块的问题
最近也碰到类似的问题。分享一下。说不定有用。
我用PASV模式连接服务器put文件。老是连接不上,并报一样的错误。后来发现,原来服务器PASV回来的IP地址和原地址不一样,而且连不通的。所以只好改写Net::FTP.pm文件,大概从942行开始,如下:
# $data = $pkg->new(
# PeerAddr => join(".", @port[0 .. 3]),
# PeerPort => $port[4] * 256 + $port[5],
# LocalAddr => ${*$ftp}{'net_ftp_localaddr'},
# Proto => 'tcp'
# );
### add by xc 20111221 begin
### sometimes passive host is not connected. turn to use ftp host
# if( !$data ){
$data = $pkg->new(
PeerAddr => ${*$ftp}{'net_ftp_host'},
PeerPort => $port[4] * 256 + $port[5],
LocalAddr => ${*$ftp}{'net_ftp_localaddr'},
Proto => 'tcp'
);
# }
### add by xc 20111221 end
这样就可以了。
❹ ftp使用perl脚本
#!/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;
}
老大 我自己执行是可以的, 把分给我吧
❺ 如何安装和使用perl编译器
1、查看是否安装cpan软件包:
#rpm -qa |grep perl-CPAN
2、如果没有安装,则进行安装:
#yum install perl-CPAN*
3、安装完成后,则可以通过cpan来安装相应模块。比如我要安装IPC::System::Simple模块:
#cpan IPC::System::Simple
......
.....
.....
4、安装完成后,查看文档:
#perldoc IPC::System::Simple
将会列出相应的用法和说明。
linux上安装Perl模块的两种方法
Linux/Unix下安装Perl模块有两种方法:手工安装和自动安装。第一种方法是从CPAN上下载
您需要的模块,手工编译、安装。第二种方法是联上internet,使用一个叫做CPAN的模块自动完
成下载、编译、安装的全过程。
a、手工安装的步骤:
从CPAN下载了DBI模块1.13版的压缩文件DBI-1.13.tar.gz,假设放在/usr/local/src/下。
cd/usr/local/src
解压缩这个文件:
tarxvzfDBI-1.13.tar.gz
这时会新建一个DBI-1.13的目录。
cdDBI-1.13
生成makefile:
perlMakefile.PL
建立模块
make
测试模块
maketest
如果测试结果报告“alltestok”,您就可以放心地安装编译好的模块了。安装模块前,先要
确保您对perl5安装目录有可写权限(通常以su命令获得),执行:
makeinstall
现在,写个程序试试吧。
#!/usr/bin/perl-w
usestrict;
useDBI;
..
上述步骤适合于Linux/Unix下绝大多数的Perl模块。可能还有少数模块的安装方法略有差别,
所以最好先看看安装目录里的README或INSTALL。另外,上述过程是针对动态链接的Perl编译器(所有Linux下预安装的Perl都是动态链接的),如果您在使用一个静态链接的Perl,您需要将新的模块静态链接到perl编译器中,可能还需要重启机器。
b、使用CPAN模块自动安装:
安装前需要先联上线,并且您需要取得root权限。
perl-MCPAN-eshell
初次运行CPAN时需要做一些设置,如果您的机器是直接与internet相联(拨号上网、专线,etc.),
那么一路回车就行了,只需要在最后选一个离您最近的CPAN镜像站点。例如我选的是位于国内的
中国自由软件库ftp://freesoft.cgi.gov.cn/pub/languages/perl/CPAN。否则,如果您的机器位于防火墙之后,还需要设置ftp代理或http代理。
获得帮助
cpan>h
列出CPAN上所有模块的列表
cpan>m
根据关键字在CPAN上查找某个模块:
cpan[1]> i /scws/
CPAN: Storable loaded ok (v2.20)
Going to read '/home/orisun/.cpan/Metadata'
Database was generated on Sat, 17 Nov 2012 08:07:03 GMT
Distribution XUERON/Text-Scws-0.01.tar.gz
Mole Text::Scws (XUERON/Text-Scws-0.01.tar.gz)
2 items found
安装模块
cpan>installDBI
自动完成DBI模块从下载到安装的全过程。
退出
cpan>q
❻ 如何用perl获得某个ftp目录下所有的文件和文件夹的路径
用perl获取某一文件所在路径,参考代码如下:
use Cwd 'abs_path';
print abs_path($0)."\n";
man Cwd
NAME
Cwd - get pathname of current working directory
SYNOPSIS
use Cwd;
my $dir = getcwd;
use Cwd 'abs_path';
my $abs_path = abs_path($file);
❼ perl登录FTP后找出修改时间最近的那个文件,然后把它下载下来,请问该如何实现
用Net::FTP模块的mdtm 方法可以取得最后修改时间,然后根据你的要求下载。
❽ perl FTP模块中put 的应用
Cannot open Local file xxxxxxx.xml 这样的提示,表示你的本地文件不存在,本地文件可以使用全称(包含路径),远程文件不能含有目录,只有名字,当然是自动建立,如果存在同名文件会覆盖。
❾ win上的perl用ftp下载linux下的整个目录,怎么搞
建议调用wget
没有git可用吗……