Мне нужно интегрировать индикатор выполнения в операции на удаленном сервере через SSH.
В моей ситуации есть несколько циклов, которые запускают процессы на нескольких удаленных серверах через SSH. Эти процессы запускаются с определенной certainFunction
и занимают от 10 до 60 минут (в зависимости от многих непредсказуемых вещей). Поскольку процессы управляются с основного сервера, я хотел бы отображать некоторые индикаторы выполнения, основанные на времени, например, процент или полосу (НЕ точки или счетчик), которые будут указывать на общий прогресс.
Это возможно?
В поисках какого-то экстравагантного решения я обнаружил, что проект Эдуарда Лопеса progress-bar.sh
подходит для моих нужд.
Вот код для 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
}
Можно ли это использовать в моей ситуации? Я ищу чистое решение Bash без установки дополнительных пакетов.