机器环境:

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