使用Unix脚本从ftp上传和下载文件

时间:2019-02-28 22:08:45

标签: unix ftp

下面是我们使用.netrc文件时使用的代码。但是现在我们      无法使用自动登录。因此必须手动读取.netrc文件并提取      用户名和密码。这是通用的下载脚本,将下载文件      从服务器。在转换此脚本以读取文件时,我需要一些帮助      并获取用户名和密码。

  . $HOME/env
  . $LIB_PATH/miip_functions.shl
   OPTIND=1;ftpop=;user=;hosts=;quote=
  while getopts h:f:n:q: arg
  do
   case $arg in
     h)  hosts="$OPTARG"
     ;;
    f)  hosts=`cat $OPTARG`
      ;;
    n)  ftpop=-n
     user="user $OPTARG"
       ;;
   q)  quote="$OPTARG"
   ;;
       \?) logMessage ERROR "download.shl was used incorrectly."
       endRun 1
      ;;
  esac
 done
shift `expr $OPTIND - 1`
 if [ $# -ne 2 ] ; then
  logMessage ERROR "download.shl was used incorrectly."
  endRun 1
  fi
 dataset="'$1'"
  filename=$2
 file=`basename $2`
 if [ -z "$hosts" ] ; then
  hosts=`cat $LIB_PATH/ftp.hosts 2> /dev/null`
  if [ -z "$hosts" ] ; then
      hosts="ftp.test ftp.test2"
   fi
      fi
     logMessage DLOAD "Starting FTP download of $file."
      for host in $hosts
     do
    ftp -v $ftpop $host << ! > $TMPFILE.ftp 2>&1
      $user
      $quote
     get $dataset $filename
      !
      egrep '^421 |^425 |^426 |^450 |^451 |^452 |^530 |^531 |^550 |^551 
     |^552|^553 |^590 |^Not connected' $TMPFILE.ftp > /dev/null 2>&1
        rtn=$?
       if [ $rtn -eq 1 ] ; then 
         break
         fi
      done

    (echo ; echo -------------- ; echo $PROGNAME ; echo --------------) >> 
  $RUNFILE
  cat $TMPFILE.ftp >> $RUNFILE
     rm -f $TMPFILE.ftp

    if [ $rtn -eq 1 ] ; then
     logMessage DLOAD "Completed FTP download of $file."
    else
      logMessage ERROR "Download of $file failed."
      fi
       `

0 个答案:

没有答案