使用Unix脚本从ftp服务器上载和下载文件

时间:2019-03-08 15:18:10

标签: unix ftp

下面是当我们使用.netrc文件进行自动登录时使用的代码。但是由于多协议环境,现在我们不能使用自动登录,因此必须手动读取.netrc文件并获取用户名和密码,这是通用的下载脚本,将从服务器下载文件。在转换此脚本以读取文件并获取用户名和密码时,我需要一些帮助。 我已经添加了使用自动登录时使用的代码。现在,我需要读取文件并获取用户名和密码,并在脚本中使用它。下面是.netrc文件机器ftp.test登录test1密码test2的格式。我需要从脚本中读取ftp.test并获取test1(用户名)和test2(密码)来进行ftp。

 . $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 个答案:

没有答案