- 论坛徽章:
- 0
|
[color="#0000bb"]如何利用ftp自动下载文件
如何利用ftp自动下载文件
Author[color="#007700"]: [color="#0000bb"]Huang W[color="#007700"].[color="#0000bb"]Y[color="#007700"].([color="#0000bb"]melocy[color="#007700"]@[color="#0000bb"]21cn[color="#007700"].[color="#0000bb"]com)
[color="#0000bb"]Date [color="#007700"]: [color="#0000bb"]2003[color="#007700"]/[color="#0000bb"]05[color="#007700"]/20
关键词
自动下载
场景
两台主机hosta和hostb。
主机hosta的目录[color="#007700"]/[color="#0000bb"]tmp每日有文件产生。文件名和日期有关,文件格式为abcYYMMDD[color="#007700"].txt。
主机hostb利用ftp每日定时(cron)自动登录主机hosta,下载文件abcYYMMDD[color="#007700"].[color="#0000bb"]txt。保存目录为[color="#007700"]/BACKUP。
hosta的ftp用户为usera[color="#007700"],[color="#0000bb"]密码为usera,IP为xxx[color="#007700"].[color="#0000bb"]xxx[color="#007700"].[color="#0000bb"]xxx[color="#007700"].xxx。
方案
ftp通常用交互方式下载文件。不过别忘了ftp还可以用自动方式下载文件。
在执行ftp –i hosta时,ftp首先在用户HOME目录下查看是否存在[color="#007700"].netrc文件。
如果不存在[color="#007700"].[color="#0000bb"]netrc文件则以交互方式提示用户输入用户名和密码。如果存在[color="#007700"].netrc
文件并且有匹配hosta的machine条目,则读取[color="#007700"].netrc文件的配置信息自动登录目
标主机。在[color="#007700"].netrc文件中可以定义宏模块。
在命令行下可以运行ftp[color="#007700"],自动登录目标主机,执行宏模块。命令如下:
[color="#007700"]echo $ [color="#0000bb"]macname arg1 [color="#007700"]... |ftp –i hostname
与日期相关的文件,通过宏模块中的参数实现。
实施步骤
[color="#007700"].netrc配置文件。
在主机hostb的HOME目录下建[color="#007700"].netrc文件,文件属性是属主可读可写,组和其它不可读不可写。
hostb[color="#007700"]>[color="#0000bb"]cat [color="#007700"].netrc
#begin of file .netrc
[color="#0000bb"]machine xxx[color="#007700"].[color="#0000bb"]xxx[color="#007700"].[color="#0000bb"]xxx[color="#007700"].xxx login usera password usera
macdef m_get #定义宏模块,宏名自定。
[color="#0000bb"]cd [color="#007700"]/[color="#0000bb"]tmp #以 TAB开头。
[color="#0000bb"]get abc[color="#007700"]$[color="#0000bb"]1.txt #以 TAB开头。
[color="#0000bb"]quit #以 TAB开头。
#空白行
#end of file .netrc
ftp命令行参数
hostb[color="#007700"]>echo $ [color="#0000bb"]m_get [color="#007700"]`[color="#0000bb"]date +%y%m%d[color="#007700"]`|[color="#0000bb"]ftp –i xxx[color="#007700"].[color="#0000bb"]xxx[color="#007700"].[color="#0000bb"]xxx[color="#007700"].xxx
[color="#007700"]| |---参数1
[color="#007700"]|-----宏模块名
至此,你可以在hostb上手工输入以上命令下载hosta上的[color="#007700"]/[color="#0000bb"]tmp[color="#007700"]/[color="#0000bb"]abcYYMMDD[color="#007700"].txt文件。
以下是利用cron自动定时ftp下载文件。
自动ftp运行脚本。
注意脚本文件属性是属主可读可执行。
hostb[color="#007700"]>cat ourftp
#begin of file ourftp
#!/bin/sh
[color="#0000bb"]PATH[color="#007700"]=[color="#0000bb"]$PATH[color="#007700"]; export PATH
BAKDIR[color="#007700"]=/BACKUP
#format : ourget dir mac machine
[color="#0000bb"]ourget() {
[ ! -[color="#0000bb"]d [color="#007700"]$[color="#0000bb"]1 [color="#007700"]] && [color="#0000bb"]mkdir [color="#007700"]-[color="#0000bb"]p [color="#007700"]$1
cd [color="#007700"]$1
[color="#007700"]echo [color="#dd0000"]"$ $2 `date +%y%m%d`"[color="#007700"]|[color="#0000bb"]ftp [color="#007700"]-[color="#0000bb"]i [color="#007700"]$[color="#0000bb"]3 #关键语句
}
[color="#0000bb"]ourget [color="#007700"]${[color="#0000bb"]BAKDIR[color="#007700"]} [color="#0000bb"]m_get xxx[color="#007700"].[color="#0000bb"]xxx[color="#007700"].[color="#0000bb"]xxx[color="#007700"].xxx
#end of ourftp
在crontab中,加入一行:
30 03 [color="#007700"]* * *
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/1537/showart_39683.html |
|