Saya perlu mengintegrasikan progress bar untuk operasi di server jauh melalui SSH.
Dalam situasi saya ada beberapa loop yang memicu proses pada beberapa server jauh melalui SSH. Proses-proses ini dipicu dengan certainFunctiondan memakan waktu antara 10 hingga 60 menit (tergantung pada banyak hal yang tidak terduga). Sejauh proses dikendalikan dari server utama, saya ingin menampilkan beberapa progress bar berdasarkan waktu, seperti persentase atau bar (BUKAN titik atau pemintal), yang akan menunjukkan kemajuan secara keseluruhan.
Apakah ini mungkin?
Mencari beberapa solusi boros, saya menemukan proyek Édouard Lopezprogress-bar.sh cocok untuk kebutuhan saya.
Ini adalah kode untuk progress-bar.sh:
progress-bar() {
local duration=${1}
already_done() { for ((done=0; done<$elapsed; done++)); do printf "▇"; done }
remaining() { for ((remain=$elapsed; remain<$duration; remain++)); do printf " "; done }
percentage() { printf "| %s%%" $(( (($elapsed)*100)/($duration)*100/100 )); }
clean_line() { printf "\r"; }
for (( elapsed=1; elapsed<=$duration; elapsed++ )); do
already_done; remaining; percentage
sleep 1
clean_line
done
clean_line
}
Bisakah itu digunakan untuk situasi saya? Saya mencari solusi Bash murni tanpa paket tambahan yang diinstal.
progress-bar ${#arrayOfIPaddresses[@]}dan alih-alih sleepperintah, jalankan kode Anda yang sebenarnya
$duration; terutama ketika ada banyak hal yang tidak terduga. Mungkin indikator kemajuan terbaik yang dapat Anda miliki adalah seperti "N tugas M selesai".