Bashスクリプトで次のコマンドを使用して、ftpサーバーからファイルをダウンロードしています。このコマンドは、ダウンロードされる各ファイルの名前を表示する-vオプションを使用します。
/usr/bin/lftp ftp://$ftpuser:$ftppass@$ftphost -e "$ftpsettings ;
mirror -v -e $remotemedia $localmedia ; quit"
スクリプトを変更して、ホイップテールを使用してプログレスバーを表示し、ダウンロードの進行状況を表示する必要があります。これはプログレスバーですが、lftpのダウンロードの進行状況を読み取らせる方法がわかりません。
{
for ((i = 0 ; i <= 100 ; i+=5)); do
sleep 0.1
echo $i
done
} | whiptail --gauge "Downloading file $name..." 6 50 0
これどうやってするの?
パーセンテージを実行するには、ファイルの総数を知る必要があります。これは、lftp
コマンドと同じディレクトリから開始して別のmirror
内のls -R
から取得できます。 「。」の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