Bash,shell - 一个脚本中的多个LFTP命令

时间:2016-03-02 18:56:08

标签: bash shell lftp

我一直试图通过FTP服务器移动一些文件来解决相对较小的问题,但到目前为止还没有运气。

简而言之,这就是我正在做的事情,我有三台服务器:

SourceSFTP TargetSFTP Target_2_SFTP

该脚本应该执行以下操作

  1. 连接到SourceFTP
  2. 抓取所有文件
  3. 循环浏览文件
  4. 调用将文件作为参数并对其执行操作的函数,让我们将其称为postfunc()
  5. 将文件删除到TargetSFTP
  6. 问题发生在postfunc内部我再次调用lftp将文件传输到Target_2SFTP。命令执行正常(我可以看到文件被移动)但是数字5从未发生过。

    这是我的脚本:

    function postfunc() {
      the_file=$1
    
      lftp<<END_SCRIPT2
    open sftp://$Target2SFTP
    user $USERNAME $PASSWORD
    cd /root
    put $the_file
    bye
    END_SCRIPT2
    }
    
    
    echo "Downloading files from $SOURCE_SFTP"
    lftp -e "echo 'testing connection';exit" -u $SOURCE_USERNAME,$SOURCE_PASSWORD $SOURCE_SFTP
    lftp -e "set xfer:clobber true;mget $SOURCE_DIR*.csv;exit" -u $SOURCE_USERNAME,$SOURCE_PASSWORD $SOURCE_SFTP || exit 0
    
    files=(*.csv)
    batch=10
    for ((i=0; i < ${#files[@]}; i+=batch)); do
      commands=""
      # Do some stuff  
      for((j=0; j < batch; j+=1)); do
        commands=$commands"mv source_dir/${files[i+j} archivedir/${files[i+j]};"
        postfunc ${files[i]}
      done
    
    
      echo "Archiving batch..."
      lftp -e "$commands;exit" -u $SOURCE_USERNAME,$SOURCE_PASSWORD $SOURCE_SFTP
    
      lftp<<END_SCRIPT
    open sftp://$TARGET_SFTP
    user $TARGET_USERNAME $TARGET_PASSWORD
    cd $TARGET_DIR
    mput dirr/*
    bye
    END_SCRIPT
    
    done    
    

    希望我错过了一些明显的东西......目前即使我移动了一个文件&#34;归档批次&#34;永远不会出现,如果我删除postfunc()的内容,一切都正确执行

0 个答案:

没有答案