perl自动ftp的方法(Linux版本,Net::FTP)
--这里所有的perl技术问题都是我平常处理数据的时候要用到的,可能不是很强的程序,但是希望能和热爱perl的同志,一起分享...
在很多情况下,我们需要从远处服务器上下载当天或者昨天生成的日志文件,来查看一些我们需要的东西或者备份。
如果采用了ftp,那么我们应该建立自动化的ftp方式,来方便我们的工作,下面我们将使用perl语言编写的,当然也可以用shell。
利用了perl的模块:Net::FTP。
#!/usr/bin/perl
use Net::FTP;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime();
$year=$year+1900; #显示为当前年份
$mon=$mon+1; #显示为当前月份
$mon = "0".$mon if ($mon < 10); #显示月份为 01,02的格式
$sum="$year-$mon-$mday"; #显示时间 为 2008-12-22 这样的格式
$ftp = Net::FTP->new("hostname(IP地址)", Debug =>1);
$ftp->login('user(用户名)','passwd(密码)');
$ftp->binary;
$ftp->cwd("path(路径)");
$ftp->get("$sum-filename(文件名)") #比如 2008-12-22_text.txt
or die "$!";
$ftp->quit;
保存后。给文件加上执行。利用 chmod命令。(我们暂时把执行文件叫做 Ftp.pl)
在来设置例行性命令 利用crontab命令。
比如 你想早上5点半开始执行下载。则加入
30 05 * * * perl Ftp.pl
保存。则程序就开始自动化ftp了。
相关文档:
#include <stdio.h>
#include <unistd.h>
#define FOO "foo"
int main(void)
{
if(!access(FOO, F_OK))
{
if(!unlink(FOO))
{
}
else
{
printf("remove %s failed\n", FOO);
}
}
else
{
printf("%s not existed\ ......
连接上了服务器,检查一下。磁盘空间不够了
[java@localhost ~]$ df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/hda2 5.8G 5.8G 0M 100% /
/dev/hda1 99M 8.5M 86M 10% /boot
none 506M 0 506M 0% /dev/shm
/dev/hda6 20G 77M 19G 1% /tmp
/dev/hda5 20G 14G 5.2G 72% /usr/local
/dev/hd ......
1 cron
以下,是ctontab的格式:
分<>时<>日<>月<>星期<>要运行的命令
其中<>表示空格。
这里有c r o n t a b文件条目的一些例子:
30 21* * * /apps/bin/cleanup.sh
上面的例子表示每晚的2 1 : 3 0运行/ a p p s / b i n目录下的c l e a n u p . s h。
45 4 1,10,22 * ......