如何利用ftp自动下载文件-转

发表于:2007-06-08来源:作者:点击数: 标签:
如何利用ftp自动下载文件 如何利用ftp自动下载文件 Author : Huang W . Y .( melocy @ 21cn . com ) Date : 2003 / 05 / 20 关键词 自动下载 场景 两台主机hosta和hostb。 主机hosta的目录 / tmp每日有文件产生。文件名和日期有关,文件格式为abcYYMMDD . tx
如何利用ftp自动下载文件

 

如何利用ftp自动下载文件


Author
:   Huang W.Y.(melocy@21cn.com)
Date  :   2003/05/20

关键词
自动下载

场景
两台主机hosta和hostb。
主机hosta的目录
/tmp每日有文件产生。文件名和日期有关,文件格式为abcYYMMDD.txt。
主机hostb利用ftp每日定时(cron)自动登录主机hosta,下载文件abcYYMMDD
.txt。保存目录为/BACKUP。
hosta的ftp用户为usera
,密码为usera,IP为xxx.xxx.xxx.xxx。

方案
ftp通常用交互方式下载文件。不过别忘了ftp还可以用自动方式下载文件。
在执行ftp –i hosta时,ftp首先在用户HOME目录下查看是否存在
..netrc文件。
如果不存在
.netrc文件则以交互方式提示用户输入用户名和密码。如果存在.netrc
文件并且有匹配hosta的machine条目,则读取
.netrc文件的配置信息自动登录目
标主机。在
.netrc文件中可以定义宏模块。

在命令行下可以运行ftp
,自动登录目标主机,执行宏模块。命令如下:
echo $ macname arg1 ... |ftp –i hostname

与日期相关的文件,通过宏模块中的参数实现。

实施步骤
.netrc配置文件。
在主机hostb的HOME目录下建
.netrc文件,文件属性是属主可读可写,组和其它不可读不可写。
hostb
>cat .netrc
#begin of file .netrc
machine xxx.xxx.xxx.xxx login usera password usera
macdef m_get          
#定义宏模块,宏名自定。
    
cd /tmp            #以 TAB开头。
    
get abc$1.txt        #以 TAB开头。
    
quit               #以 TAB开头。
                     #空白行
#end of file .netrc

ftp命令行参数
hostb
>echo $ m_get `date +%y%m%d`|ftp –i xxx.xxx.xxx.xxx
             
|        |---参数1
             
|-----宏模块名
至此,你可以在hostb上手工输入以上命令下载hosta上的
/tmp/abcYYMMDD.txt文件。
以下是利用cron自动定时ftp下载文件。
自动ftp运行脚本。
注意脚本文件属性是属主可读可执行。
hostb
>cat ourftp
#begin of file ourftp
#!/bin/sh

PATH=$PATH; export PATH

BAKDIR
=/BACKUP

#format : ourget dir mac machine
ourget() {
        [ ! -
d $1 ] && mkdir -p $1
        cd
$1
        
echo "$ `date +%y%m%d`"|ftp -i $3     #关键语句
}

ourget ${BAKDIR} m_get xxx.xxx.xxx.xxx
#end of ourftp

在crontab中,加入一行:
30 03
* * *

原文转自:http://www.ltesting.net