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可用嗎……