機器環境:
OS: Redhat 5.3 64bit
今天接到一個需求,需要寫個腳本來定時自動獲取ftp文件。花了一段時間寫了個腳本,這裏給共享下。
#! /bin/bash # # Description: export riqi=`date +%Y%m%d` #export riqi="20130911" export num=`date +%d` getfile() { if [ $# -ne 1 ];then echo $"Usage: $0 {add|all}" exit 1 fi case "$1" in add) dstdir="/data/open/add/$riqi" files1="a_m-music_${riqi}_*" files2="a_m-songer_${riqi}_*" ;; all) dstdir="/data/open/all/$riqi" files1="i_m-music_${riqi}_*" files2="i_m-songer_${riqi}_*" ;; *) echo $"Usage: $0 {add|all}" exit 1 ;; esac /bin/mkdir -p $dstdir ftp -n -u 127.0.0.1 10021 << EOFftp user public fgxu\$sdSxkT!m prompt off lcd $dstdir mget $files1 $files2 EOFftp } #判斷當天是否爲每個月的第一天 if [ $num -eq 01 ];then getfile add getfile all else getfile add fi
ftp自動登錄有兩個地方需要注意:
①、ftp自動登錄需要使用-n(禁止自動登錄)、-u(禁止自動驗證)兩個參數來防止自動登錄
②、EOFftp裏面如有特殊符號需要使用"\"來取消去特殊作用;例如:user public fgxu\$sdSxkT!m