J'essaye de transformer mon code (KSH) pour y intégrer une barre de progession en dialog.
Le script originel est celui-ci : 'badips.ksh'
Le code transformé devient ceci :
Code : Tout sélectionner
mng_blocklists() {
[ "${verbose}" -eq 1 ] && display_mssg "#" "### Attempt to read datas into array blocklist"
count="${#blocklists[@]}"
modulo=$(echo "100/$count"|bc)
if [ "${count}" -gt 0 ]; then
(
#let counter+=$modulo
#[ $counter -ge 100 ] && break
for url in "${blocklists[@]}"; do
ndd="$(echo "${url}" | awk -F'/' '{ print $3 }')"
file="$(echo "${url##*/}" | sed -e 's#\?#_#g;s#=#_#g;s#php#txt#g;s#\&#_#g')";
name="${ndd}_${file}"
filename="${DIR_DL}/${name}"
let x+=$modulo
cat <<EOF
XXX
$x
Manage list $list: ($x%)
=> Download: $url
=> Transform to: $name
XXX
EOF
[ "${debug}" -eq 1 ] && printf "file: %s \n" "${file}"
# define seconds before new dl
case "${ndd}" in
"feeds.dshield.org") seconds=259200 ;; # 3 days
"lists.blocklist.de") seconds=172800 ;; # 2 days
"myip.ms") seconds=864000 ;; # 10 days
"ransomwaretracker.abuse.ch") seconds=2592000 ;; # 30 days
#"sslbl.abuse.ch") seconds=900 ;; # 15 min.
#"www.openbl.org") seconds=172800 ;; # 2 days
"www.spamhaus.org") seconds=3600;; # 1 hours
#*) seconds=86400;;
esac
if [ -f "${filename}" ]; then
# get file seconds stat
file_seconds=$(stat -f "%m" -t "%s" "${filename}")
# calcul diff time in seconds
diff_sec=$(echo "${today} - ${file_seconds}" | bc)
#unset file_seconds
if [ ${diff_sec} -gt ${seconds} ]; then download; fi
else
download
fi
case "${ndd}" in
"www.openbl.org")
uncompress
filename="${filename%.gz}"
;;
esac
purge_files
make_uniq_list
unset filename
sleep 2
done
) | dialog --title "BlockZones :: Manage list" --gauge "Please wait" 10 100
else
display_mssg "KO" "It seems not have datas!"
byebye
fi
unset count
}
Et, comme une image peut toujours aider ! :p