shell et dialog

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

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 | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Avatar de l’utilisateur
Dunatotatos
Membre
Membre
Messages : 425
Inscription : 11 mai 2016, 20:56
Status : Hors-ligne

C'est étrange. J'ai fait tourner ton script, et il arrive à la fin sans erreur.
J'ai téléchargé ton projet complet, remplacé le fichier inc/badips.ksh par celui que tu fournis ici, ai modifié les références à $blocklists par $lists, et l'ai lancé comme ça (avec quelques petites modifications pour trouver curl et unzip).

Aurais-tu un projet complet à nous fournir où tu rencontres ce problème ? Une branche dev sur le dépôt ?
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

Oui, depuis le temps... ;)
Il arrive quand même à la fin, même s'il génère un "coredump" lors de cette fameuse sortie.

Le projet est dans son entier disponible sur le git indiqué dans le premier post...
Et, non, pas de branche dev.

Je dev, et quand ça fonctionne, je git !
(à quelques erreurs près...) :p

J'ai vu tes issues... j'en ai direct cloturé une... une autre est en attente de réponse de ta part !
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Répondre