FTPサーバーからファイルをダウンロードするには、bashスクリプトで次のコマンドを使用しています。このコマンドは、ダウンロードされる各ファイルの名前を表示する -v オプションを使用します。
/usr/bin/lftp ftp://$ftpuser:$ftppass@$ftphost -e "$ftpsettings ;
mirror -v -e $remotemedia $localmedia ; quit"
ダウンロードの進行状況を表示するために進行状況バーを表示するには、hiptailを使用するようにスクリプトを変更する必要があります。これは進行状況バーですが、lftpダウンロードの進行状況を読み取る方法を知りません。
{
for ((i = 0 ; i <= 100 ; i+=5)); do
sleep 0.1
echo $i
done
} | whiptail --gauge "Downloading file $name..." 6 50 0
どうすればいいですか?
ベストアンサー1
パーセンテージを計算するには、ファイルの総数を知る必要があります。コマンドと同じディレクトリから始めて、ls -R
別のコマンド内からそれをインポートできます。 「.」に対して2を引く。と「..」がリストに表示されます。lftp
mirror
let total=$(lftp "ftp://$ftpuser:$ftppass@$ftphost" -e "$ftpsettings ;
ls -R $remotemedia; quit" | wc -l)-2
その後、lftpから出力の各行を読み取ることができ、「転送」が始まる行に対して行カウンタをインクリメントし、パーセントを計算します--gauge
(XXX、パーセント、ヘッダ、X)。
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