在很多情况下,我们需要从远处服务器上下载当天或者昨天生成的日志文件,来查看一些我们需要的东西或者备份。
如果采用了ftp,那么我们应该建立自动化的ftp方式,来方便我们的工作,下面我们将使用perl语言编写的,当然也可以用shell。
利用了perl的模块:Net::FTP。
#!/usr/bin/perl
use Net::FTP;
my (
s
e
c
,
sec,
sec,min,
h
o
u
r
,
hour,
hour,mday,
m
o
n
,
mon,
mon,year,
w
d
a
y
,
wday,
wday,yday,$isdst)=localtime();
y
e
a
r
=
year=
year=year+1900; #显示为当前年份
m
o
n
=
mon=
mon=mon+1; #显示为当前月份
m
o
n
=
"
0
"
.
mon = "0".
mon="0".mon if ($mon < 10); #显示月份为 01,02的格式
s
u
m
=
"
sum="
sum="year-
m
o
n
−
mon-
mon−mday"; #显示时间 为 2008-12-22 这样的格式
$ftp = Net::FTP->new(“hostname(IP地址)”, Debug =>1);
$ftp->login(‘user(用户名)’,‘passwd(密码)’);
$ftp->binary;
$ftp->cwd(“path(路径)”);
f
t
p
−
>
g
e
t
(
"
ftp->get("
ftp−>get("sum-filename(文件名)") #比如 2008-12-22_text.txt
or die “$!”;
$ftp->quit;
保存后。给文件加上执行。利用 chmod命令。(我们暂时把执行文件叫做 Ftp.pl)
在来设置例行性命令 利用crontab命令。
比如 你想早上5点半开始执行下载。则加入
30 05 * * * perl Ftp.pl
保存。则程序就开始自动化ftp了。
f
t
p
−
>
p
u
t
(
"
ftp->put("
ftp−>put("sum-filename(文件名)") #比如 2008-12-22_text.txt 为上传
or die “$!”;
##################################
use Net::FTP;
f
t
p
=
N
e
t
:
:
F
T
P
−
>
n
e
w
(
"
ftp=Net::FTP->new("
ftp=Net::FTP−>new("FTP_ADDR",Timeout=>30) or die “Could not connect.\n”;
#登录到FTP
f
t
p
−
>
l
o
g
i
n
(
ftp->login(
ftp−>login(FTP_username,$FTP_pass) or die “Could not login.\n”;
#切换目录
f
t
p
−
>
c
w
d
(
"
/
ftp->cwd("/
ftp−>cwd("/FTP_dir[0]") ,
F
T
P
e
r
r
o
r
=
FTP_error=
FTPerror=ftp->message;
if ( KaTeX parse error: Expected '}', got 'EOF' at end of input: …录不存在错误信息,开始创建目录FTP_dir[0]…,\n";
f
t
p
−
>
m
k
d
i
r
(
ftp->mkdir(
ftp−>mkdir(FTP_dir[0]);
print “$FTP_dir[0]目录创建完毕…并切换到目录创建目录,\n”;
f
t
p
−
>
c
w
d
(
"
/
ftp->cwd("/
ftp−>cwd("/FTP_dir[0]");
print “开始上传文件$file…\n”;
f
t
p
−
>
p
u
t
(
ftp->put(
ftp−>put(file) or die “上传$file失败。。。,\n”;
f
t
p
−
>
p
u
t
(
ftp->put(
ftp−>put(charactorfile) or die “上传$charactorfile失败。。。,\n”;
f
t
p
−
>
p
u
t
(
ftp->put(
ftp−>put(accountfile) or die “上传$accountfile失败。。。,\n”;
$ftp->quit;
}
else
{
f
t
p
−
>
p
u
t
(
ftp->put(
ftp−>put(file) or die “上传$file失败。。。,\n”;
f
t
p
−
>
p
u
t
(
ftp->put(
ftp−>put(charactorfile) or die “上传$charactorfile失败。。。,\n”;
f
t
p
−
>
p
u
t
(
ftp->put(
ftp−>put(accountfile) or die “上传$accountfile失败。。。,\n”;
KaTeX parse error: Expected 'EOF', got '}' at position 12: ftp->quit; }̲ print "上传文件file,
c
h
a
r
a
c
t
o
r
f
i
l
e
,
charactorfile,
charactorfile,accountfile至FTP的$FTP_dir[0]
完成。。。,\n";