Debian

lftp 鞭尾進度條

  • January 17, 2021

我在 bash 腳本中使用以下命令從 ftp 伺服器下載文件。此命令使用 -v 選項,該選項顯示正在下載的每個文件的名稱。

/usr/bin/lftp ftp://$ftpuser:$ftppass@$ftphost -e "$ftpsettings ;
 mirror -v -e $remotemedia $localmedia ; quit"

我需要修改腳本,使用whiptail顯示進度條,顯示下載進度。這是進度條,但不知道怎麼讓它讀取lftp下載進度。

{
   for ((i = 0 ; i <= 100 ; i+=5)); do
       sleep 0.1
       echo $i
   done
} | whiptail --gauge "Downloading file $name..." 6 50 0

我怎樣才能做到這一點?

要計算百分比,您需要知道文件總數。您可以從另一個ls -R內部獲取它,從與您的命令lftp相同的目錄開始。mirror我為“。”減去了 2。和列表中的“..”。

let total=$(lftp "ftp://$ftpuser:$ftppass@$ftphost" -e "$ftpsettings ;
  ls -R $remotemedia; quit" | wc -l)-2

然後,您可以從 lftp 讀取每一行輸出,對於開始“傳輸”的那些,您可以增加行計數器,計算百分比,並使用--gauge接受(XXX、百分比、標題、XXX)的“XXX”輸入樣式。

lftp "ftp://$ftpuser:$ftppass@$ftphost" -e "$ftpsettings ;
 mirror -v -e $remotemedia $localmedia ; quit" |

while read word word2 filename
do    if [ "$word" = Transferring ]
     then let count=count+1
          let percent=count*100/total
          echo -e "XXX\n$percent\nDownloading $filename\nXXX"
     fi
done |
whiptail --title lftp --gauge progress 10 60 0

引用自:https://unix.stackexchange.com/questions/287186