簡體   English   中英

shell bash腳本-上傳一個大tar文件,是否重試?

[英]shell bash script - upload a big tar file, retry?

我使用以下Shell腳本代碼上傳大的.tar文件。 有時,可能是服務器無法將域解析為ip或另一台服務器不可用。 因此,如果它不起作用,我不希望重試幾次。 我怎樣才能做到這一點? 我在互聯網上找不到任何東西。

ftp -inv << EOF
  open $FTP_SERVER
  user $FTP_USER $FTP_PASS
  cd $FTP_VERZEICHNIS
  mkdir ultimate_$DATE
  cd ultimate_$DATE
  mput *.tar
  quit
EOF

編輯:

抱歉,我對shell沒有真正的經驗,這會是什么樣子?

FTP_SUCCESS_MSG="226 Transfer complete"
while [fgrep "$FTP_SUCCESS_MSG" $FTPLOG]
do
FTPLOG=/temp/ftplogfile
ftp -inv <<! > $FTPLOG
  open $FTP_SERVER
  user $FTP_USER $FTP_PASS
  cd $FTP_VERZEICHNIS
  mkdir ultimate_$DATE
  cd ultimate_$DATE
  mput *.tar
  close
  quit
!
fi
exit 0
sleep 10s
else    
   echo "Upload completed"
done

根據您的代碼和linux shell中從“ ftp”命令獲取退出狀態代碼中的代碼進行調整,我做到了:

#!/bin/bash

FTP_SUCCESS_MSG="226 Transfer complete"
FTPLOG=/temp/ftplogfile

i=0
while [ $i -le 5 ]; do

ftp -inv <<! > $FTPLOG
  open $FTP_SERVER
  user $FTP_USER $FTP_PASS
  cd $FTP_VERZEICHNIS
  mkdir ultimate_$DATE
  cd ultimate_$DATE
  mput *.tar
  close
  quit
!

  if fgrep "$FTP_SUCCESS_MSG" $FTPLOG ;then
    i=10    #stupid way of saying: exit the "while"
  else
    sleep 5
    i=expr $i + 1     # ((i++)) not working
  fi

done

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM