查看: 11497|回复: 3

[精华] 【介绍】如何利用ftp自动下载文件。

[复制链接]
论坛徽章:
2
会员2006贡献徽章
日期:2006-04-17 13:46:342011新春纪念徽章
日期:2011-02-18 11:42:48
发表于 2003-5-20 17:36 | 显示全部楼层 |阅读模式
[php]
如何利用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 "\$ $2 `date +%y%m%d`"|ftp -i $3     #关键语句
}

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

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

[/php]











论坛徽章:
60
2007年度最佳版主
日期:2008-04-03 16:46:15现任管理团队成员
日期:2011-05-07 01:45:08双黄蛋
日期:2011-06-15 17:03:34ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20
发表于 2003-5-23 11:31 | 显示全部楼层
说的很清晰.
不错

使用道具 举报

回复
论坛徽章:
2
会员2006贡献徽章
日期:2006-04-17 13:46:342011新春纪念徽章
日期:2011-02-18 11:42:48
 楼主| 发表于 2003-5-23 15:42 | 显示全部楼层
仔细瞧瞧,发现由于用PHP排版,显示出现了一些纰漏。重新整理如下。
由于工作不够细致,给大家带来不便,请大家原谅。
能够得到我的偶像 Fenng 的赞誉,不胜欣喜万分。

如何利用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 "\$ $2 `date +%y%m%d`"|ftp -i $3     #关键语句
}

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

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

---------------------------

使用道具 举报

回复
论坛徽章:
4
数据库板块每日发贴之星
日期:2006-12-03 01:01:53授权会员
日期:2007-01-10 09:59:01会员2007贡献徽章
日期:2007-09-26 18:42:10ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
发表于 2007-3-30 16:15 | 显示全部楼层
好帖 好好研究研究

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表