下面是当我们使用.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
`