shell et dialog

Tout ce qui concerne la programmation.
Message
Auteur
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1013
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

shell et dialog

#1 Messagepar PengouinPdt » 20 juil. 2017, 21:37

Un de mes projets shell est le projet BlockZones !

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

}
L'exécution se passe bien, jusqu'à l'exécution du dernier item. Le script kill avec pour message d'erreur : "Bus error (core dumped)" !

Et, comme une image peut toujours aider ! :p

Image
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin " - DIY -
Debian Sid - Linux 4.9.0-2-amd64
----
Ne réponds pas aux PM d'assistance

Revenir vers « Pour les codeurs »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités