Debian
lftp 鞭尾進度條
我在 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