免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 10858 | 回复: 8
打印 上一主题 下一主题

ftp传送文件,如何判断成功传送啊?求高手解答。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-09-29 11:20 |只看该作者 |倒序浏览
我在两个主机(分别hp unix和linux)间用ftp传送文件,语句如下。

for dirdir in xiaozi dazi
do
ftp -n  -i <<!
open  10.110.1.24
user lciptv lciptv!)
binary
cd  /lciptv/IPTV/work/zxw/$dirdir
lcd /lciptv/IPTV/work/zxw/$dirdir
put 333.txt
put zhang/2222.sh
mput zh/*.sh
mput xiao/*.sh
close
bye
!
done
如何判断文件传输完成了呢?要确定没有因为断网等原因传送中断,因为传完之后要删除原文件,所以要确保传送成功。哪位帮我解答啊?

论坛徽章:
0
2 [报告]
发表于 2011-09-29 11:24 |只看该作者
上传成功有返回信息。

论坛徽章:
0
3 [报告]
发表于 2011-09-29 14:24 |只看该作者
具体使用什么语句呢?我是新手,希望能详细解答,感激啊

论坛徽章:
0
4 [报告]
发表于 2011-09-29 14:57 |只看该作者
回复 2# vsyour


我的是自动上传的ftp,所以成功了也看不到啊。希望实现上传成功就自动删除本地的文件。

论坛徽章:
0
5 [报告]
发表于 2011-09-30 11:14 |只看该作者
回复  vsyour


我的是自动上传的ftp,所以成功了也看不到啊。希望实现上传成功就自动删除本地的文件。
chinalyne 发表于 2011-09-29 14:57



    嗯。可以的。。在项目中我做过一个自动FTP的。。等有机会我把代码发出来给你参考一下。

论坛徽章:
0
6 [报告]
发表于 2011-09-30 11:50 |只看该作者

  1. ftpUploadFiles()
  2. {                                               
  3.         FTP_SERVER_IP=$1
  4.         FTP_USER=$2
  5.         FTP_PWD=$3
  6.         REMOTE_PATH=$4
  7.         LOCAL_PATH=$5
  8.         UPLOAD_FILE_NAME=$6
  9.         LOG_FILE=$7
  10.         EXP_FILE=$8
  11.         FAST_OPT=$9
  12.         FTP_PORT=${10}
  13.                                                      
  14.     declare l_upDownSuccessPartern="*\n226*";            # prompt info: upload success
  15.     declare l_noSpacePartern="*\n452*";                    # prompt info: no space left
  16.     declare l_cdErrPartern="*\n550*";    # prompt info: cannot find upload path
  17.     declare l_networkUnreachablePartern="*ftp:*connect:*";        # prompt info: cannot connect to ftp server
  18.     declare l_networkProblem="*\n426*";
  19.     declare l_pwdErrorPartern="*\n530*";
  20.     declare l_cdErrPartern2="\n501*";
  21.    
  22.     declare -i l_upDownSuccessRtn=0;                                                # return info: upload success
  23.     declare -i l_noSpaceRtn=22;                                                     # return info: no space left
  24.     declare -i l_connectTimeoutRtn=11;                                              # return info: transport timeout, maybe transport speed<1M/s
  25.     declare -i l_networkUnreachableRtn=10;                                          # return info: cannot connect to ftp server
  26.     declare -i l_cdErrRtn=111;                                                      # return info: cannot find upload path
  27.     declare -i l_pwdErrorRtn=33;                                                     # return info: incorrect password
  28.     declare -i l_networkErr=53;      
  29.     l_ftpCmd="cd ${REMOTE_PATH}\nlcd ${LOCAL_PATH}\nbin\nput ${UPLOAD_FILE_NAME}\nbye\n";
  30.    
  31.     declare -i l_dataFileSize=`du -sm "${LOCAL_PATH}/${UPLOAD_FILE_NAME}" | awk '{print $1}'`;
  32.     declare -i l_transferMinSpeed=1;                                                          # to caculate transport speed
  33.     declare -i l_execFtpCmdTime=`expr "${l_dataFileSize}" \/ "${l_transferMinSpeed}" + 10`;    # transport time of timeout
  34.    
  35.     echo "========TimeOut Of Transport: l_execFtpCmdTime=$l_execFtpCmdTime==========" >>$LOG_FILE 2>&1;
  36.    
  37.     if [ "$FAST_OPT" != "true" ]; then   
  38.         if ! ping $FTP_SERVER_IP -c 1 -q >& /dev/null ; then
  39.             UPLOAD_FAIL_INFO="Cannot connect to ftp server, upload fail, please check network first."
  40.             echo "$UPLOAD_FAIL_INFO"  >>$LOG_FILE;
  41.             return 5;
  42.         fi;   
  43.     fi;                          

  44. cat << EOF > $EXP_FILE   
  45.     #!/usr/bin/expect
  46.     spawn ftp $FTP_USER@$FTP_SERVER_IP $FTP_PORT
  47.     set timeout 3
  48.     expect "*assword:*" { send "$FTP_PWD\n" }   
  49.     #expect "*Login failed*" { send "bye\n"; exit $l_pwdErrorRtn }
  50.     expect "$l_networkUnreachablePartern" { exit $l_networkUnreachableRtn }
  51.     expect "*ftp>*" { send "$l_ftpCmd\n"  }
  52.    
  53.     set timeout $l_execFtpCmdTime
  54.     expect {
  55.         "$l_upDownSuccessPartern" { exit $l_upDownSuccessRtn }
  56.         "$l_networkProblem" {exit $l_networkErr }
  57.         "$l_noSpacePartern" { exit $l_noSpaceRtn }
  58.         "$l_cdErrPartern" { exit $l_cdErrRtn }
  59.         "$l_networkUnreachablePartern" { exit $l_networkUnreachableRtn }
  60.         "$l_pwdErrorPartern" {exit $l_pwdErrorRtn}
  61.         "$l_cdErrPartern2" {exit $l_cdErrRtn}
  62.     }

  63.     expect timeout { exit $l_connectTimeoutRtn }     

  64. EOF
  65.    
  66.     expect -d -f "${EXP_FILE}" >>$LOG_FILE 2>&1;
  67.     declare -i l_expectCmdRtn="${?}";
  68.     echo "========The return code of execute ftp exp: l_expectCmdRtn=$l_expectCmdRtn==========" >>$LOG_FILE 2>&1;
  69.     rm -rf "${EXP_FILE}";
  70.    
  71.     case "${l_expectCmdRtn}" in
  72.         "${l_upDownSuccessRtn}" )  return 0;
  73.             ;;
  74.         "${l_pwdErrorRtn}" )  echo "Incorrect username or password, upload $TAR_NAME fail."  >>$LOG_FILE;
  75.          UPLOAD_FAIL_INFO="Incorrect username or password, upload $UPLOAD_FILE_NAME fail." ;
  76.          return 1 ;
  77.             ;;            
  78.         "${l_noSpaceRtn}" )  echo "No enough disk space, upload $UPLOAD_FILE_NAME fail."  >>$LOG_FILE;
  79.          UPLOAD_FAIL_INFO="No enough disk space, upload $UPLOAD_FILE_NAME fail." ;
  80.          delFtpRemoteFile $FTP_SERVER_IP $FTP_USER $FTP_PWD $REMOTE_PATH $UPLOAD_FILE_NAME $LOG_FILE $FTP_PORT;
  81.          return 2 ;
  82.             ;;
  83.         "${l_connectTimeoutRtn}" )  echo  "Execute ftp command timeout, upload $UPLOAD_FILE_NAME fail."  >>$LOG_FILE;
  84.          UPLOAD_FAIL_INFO="Execute ftp command timeout, upload $UPLOAD_FILE_NAME fail." ;
  85.          delFtpRemoteFile $FTP_SERVER_IP $FTP_USER $FTP_PWD $REMOTE_PATH $UPLOAD_FILE_NAME $LOG_FILE $FTP_PORT;
  86.          return 3;
  87.             ;;
  88.         "${l_cdErrRtn}" )  echo "No such upload directory, upload $UPLOAD_FILE_NAME fail."  >>$LOG_FILE;
  89.         UPLOAD_FAIL_INFO="No such upload directory,,upload $UPLOAD_FILE_NAME fail." ;
  90.          return 4;
  91.             ;;
  92.         "${l_networkUnreachableRtn}" )  echo "Connect to ftp server fail, check network first, upload $UPLOAD_FILE_NAME fail."  >>$LOG_FILE;
  93.          UPLOAD_FAIL_INFO="Cannot connect to ftp server, upload $UPLOAD_FILE_NAME fail." ;
  94.          return 5;         
  95.             ;;
  96.          "${l_networkErr}" )  echo "Connection closed; transfer aborted , check network first, upload $UPLOAD_FILE_NAME fail."  >>$LOG_FILE;
  97.           UPLOAD_FAIL_INFO="Connection closed; transfer aborted , upload $UPLOAD_FILE_NAME fail." ;
  98.           return 7;
  99.             ;;
  100.         * ) #### unexpected brance
  101.             echo "Execute expect command return unknown error, upload $UPLOAD_FILE_NAME fail."  >>$LOG_FILE;
  102.              UPLOAD_FAIL_INFO="Execute expect command return unknown error, upload $TAR_NAME fail." ;
  103.              delFtpRemoteFile $FTP_SERVER_IP $FTP_USER $FTP_PWD $REMOTE_PATH $UPLOAD_FILE_NAME $LOG_FILE $FTP_PORT;
  104.              return 6;
  105.             ;;
  106.     esac;     

  107. }


复制代码

论坛徽章:
0
7 [报告]
发表于 2011-09-30 16:41 |只看该作者
md5码信息来判断啊。

论坛徽章:
48
15-16赛季CBA联赛之青岛
日期:2021-01-07 13:41:2315-16赛季CBA联赛之上海
日期:2020-12-01 18:02:0720周年集字徽章-20	
日期:2020-10-28 14:14:2620周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之天津
日期:2020-10-18 22:51:412016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之北控
日期:2015-12-22 13:30:48操作系统版块每日发帖之星
日期:2015-12-07 06:20:00操作系统版块每日发帖之星
日期:2015-09-04 06:20:002015亚冠之德黑兰石油
日期:2015-08-05 18:46:082015年亚洲杯之巴勒斯坦
日期:2015-04-19 10:42:502015年亚洲杯之巴林
日期:2015-04-09 08:03:23
8 [报告]
发表于 2011-10-02 18:52 |只看该作者
本帖最后由 lbseraph 于 2011-10-02 18:54 编辑

顶6#,学习~

PS: 简单的话,LZ可以把返回信息重定向到一个文件里面,到时候检查这个文件记录应该也可以吧~

论坛徽章:
0
9 [报告]
发表于 2012-06-26 14:24 |只看该作者
六楼 通过 expect 进行交互吧,另外给一种方式 csdn上看到的具体链接地址忘记了,ftp执行返回信息输出到文件中,然后那获取文件中信息判断
#!/bin/bash
#$1 host $2 user $3 password $4 local file  $5 remote file
ftp -in $1 1>log.txt <<!!
user $2 $3
bin
prompt
put $4 $5  
dir $5
close
bye
!!


然后分析log.txt  分析文件或者 文件大小对比均行
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP