- 论坛徽章:
- 0
|
- ftpUploadFiles()
- {
- FTP_SERVER_IP=$1
- FTP_USER=$2
- FTP_PWD=$3
- REMOTE_PATH=$4
- LOCAL_PATH=$5
- UPLOAD_FILE_NAME=$6
- LOG_FILE=$7
- EXP_FILE=$8
- FAST_OPT=$9
- FTP_PORT=${10}
-
- declare l_upDownSuccessPartern="*\n226*"; # prompt info: upload success
- declare l_noSpacePartern="*\n452*"; # prompt info: no space left
- declare l_cdErrPartern="*\n550*"; # prompt info: cannot find upload path
- declare l_networkUnreachablePartern="*ftp:*connect:*"; # prompt info: cannot connect to ftp server
- declare l_networkProblem="*\n426*";
- declare l_pwdErrorPartern="*\n530*";
- declare l_cdErrPartern2="\n501*";
-
- declare -i l_upDownSuccessRtn=0; # return info: upload success
- declare -i l_noSpaceRtn=22; # return info: no space left
- declare -i l_connectTimeoutRtn=11; # return info: transport timeout, maybe transport speed<1M/s
- declare -i l_networkUnreachableRtn=10; # return info: cannot connect to ftp server
- declare -i l_cdErrRtn=111; # return info: cannot find upload path
- declare -i l_pwdErrorRtn=33; # return info: incorrect password
- declare -i l_networkErr=53;
- l_ftpCmd="cd ${REMOTE_PATH}\nlcd ${LOCAL_PATH}\nbin\nput ${UPLOAD_FILE_NAME}\nbye\n";
-
- declare -i l_dataFileSize=`du -sm "${LOCAL_PATH}/${UPLOAD_FILE_NAME}" | awk '{print $1}'`;
- declare -i l_transferMinSpeed=1; # to caculate transport speed
- declare -i l_execFtpCmdTime=`expr "${l_dataFileSize}" \/ "${l_transferMinSpeed}" + 10`; # transport time of timeout
-
- echo "========TimeOut Of Transport: l_execFtpCmdTime=$l_execFtpCmdTime==========" >>$LOG_FILE 2>&1;
-
- if [ "$FAST_OPT" != "true" ]; then
- if ! ping $FTP_SERVER_IP -c 1 -q >& /dev/null ; then
- UPLOAD_FAIL_INFO="Cannot connect to ftp server, upload fail, please check network first."
- echo "$UPLOAD_FAIL_INFO" >>$LOG_FILE;
- return 5;
- fi;
- fi;
- cat << EOF > $EXP_FILE
- #!/usr/bin/expect
- spawn ftp $FTP_USER@$FTP_SERVER_IP $FTP_PORT
- set timeout 3
- expect "*assword:*" { send "$FTP_PWD\n" }
- #expect "*Login failed*" { send "bye\n"; exit $l_pwdErrorRtn }
- expect "$l_networkUnreachablePartern" { exit $l_networkUnreachableRtn }
- expect "*ftp>*" { send "$l_ftpCmd\n" }
-
- set timeout $l_execFtpCmdTime
- expect {
- "$l_upDownSuccessPartern" { exit $l_upDownSuccessRtn }
- "$l_networkProblem" {exit $l_networkErr }
- "$l_noSpacePartern" { exit $l_noSpaceRtn }
- "$l_cdErrPartern" { exit $l_cdErrRtn }
- "$l_networkUnreachablePartern" { exit $l_networkUnreachableRtn }
- "$l_pwdErrorPartern" {exit $l_pwdErrorRtn}
- "$l_cdErrPartern2" {exit $l_cdErrRtn}
- }
- expect timeout { exit $l_connectTimeoutRtn }
- EOF
-
- expect -d -f "${EXP_FILE}" >>$LOG_FILE 2>&1;
- declare -i l_expectCmdRtn="${?}";
- echo "========The return code of execute ftp exp: l_expectCmdRtn=$l_expectCmdRtn==========" >>$LOG_FILE 2>&1;
- rm -rf "${EXP_FILE}";
-
- case "${l_expectCmdRtn}" in
- "${l_upDownSuccessRtn}" ) return 0;
- ;;
- "${l_pwdErrorRtn}" ) echo "Incorrect username or password, upload $TAR_NAME fail." >>$LOG_FILE;
- UPLOAD_FAIL_INFO="Incorrect username or password, upload $UPLOAD_FILE_NAME fail." ;
- return 1 ;
- ;;
- "${l_noSpaceRtn}" ) echo "No enough disk space, upload $UPLOAD_FILE_NAME fail." >>$LOG_FILE;
- UPLOAD_FAIL_INFO="No enough disk space, upload $UPLOAD_FILE_NAME fail." ;
- delFtpRemoteFile $FTP_SERVER_IP $FTP_USER $FTP_PWD $REMOTE_PATH $UPLOAD_FILE_NAME $LOG_FILE $FTP_PORT;
- return 2 ;
- ;;
- "${l_connectTimeoutRtn}" ) echo "Execute ftp command timeout, upload $UPLOAD_FILE_NAME fail." >>$LOG_FILE;
- UPLOAD_FAIL_INFO="Execute ftp command timeout, upload $UPLOAD_FILE_NAME fail." ;
- delFtpRemoteFile $FTP_SERVER_IP $FTP_USER $FTP_PWD $REMOTE_PATH $UPLOAD_FILE_NAME $LOG_FILE $FTP_PORT;
- return 3;
- ;;
- "${l_cdErrRtn}" ) echo "No such upload directory, upload $UPLOAD_FILE_NAME fail." >>$LOG_FILE;
- UPLOAD_FAIL_INFO="No such upload directory,,upload $UPLOAD_FILE_NAME fail." ;
- return 4;
- ;;
- "${l_networkUnreachableRtn}" ) echo "Connect to ftp server fail, check network first, upload $UPLOAD_FILE_NAME fail." >>$LOG_FILE;
- UPLOAD_FAIL_INFO="Cannot connect to ftp server, upload $UPLOAD_FILE_NAME fail." ;
- return 5;
- ;;
- "${l_networkErr}" ) echo "Connection closed; transfer aborted , check network first, upload $UPLOAD_FILE_NAME fail." >>$LOG_FILE;
- UPLOAD_FAIL_INFO="Connection closed; transfer aborted , upload $UPLOAD_FILE_NAME fail." ;
- return 7;
- ;;
- * ) #### unexpected brance
- echo "Execute expect command return unknown error, upload $UPLOAD_FILE_NAME fail." >>$LOG_FILE;
- UPLOAD_FAIL_INFO="Execute expect command return unknown error, upload $TAR_NAME fail." ;
- delFtpRemoteFile $FTP_SERVER_IP $FTP_USER $FTP_PWD $REMOTE_PATH $UPLOAD_FILE_NAME $LOG_FILE $FTP_PORT;
- return 6;
- ;;
- esac;
- }
复制代码 |
|