操作系统

如何利用ftp自动下载文件-转解决处理
作者 linuxyueye 2007年02月27日 06:32

    如何利用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 * * *

    

    

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/14184/showart_250618.html

打开APP阅读全文

如何利用ftp自动下载文件-转解决处理

如何利用ftp自动下载文件-转解决处理

长按识别二维码 进入IT168查看全文

请长按保存图片
{{data.thematic.text}}

相关文章

加载中...

分享到

请使用浏览器的分享功能
分享到微信等