*New 11.3 series Release:
2019-10-05: XigmaNAS 11.3.0.4.6928 - released, 11.2 series are soon unsupported!

*New 12.0 series Release:
2019-10-05: XigmaNAS 12.0.0.4.6928 - released!

*New 11.2 series Release:
2019-09-23: XigmaNAS 11.2.0.4.6881 - released!

We really need "Your" help on XigmaNAS https://translations.launchpad.net/xigmanas translations. Please help today!

Producing and hosting XigmaNAS costs money. Please consider donating for our project so that we can continue to offer you the best.
We need your support! eg: PAYPAL

Simple application de téléchargement de Nas4Free

Moderators: mtiburs, velivole18, ernie

Post Reply
User avatar
velivole18
Forum Moderator
Forum Moderator
Posts: 623
Joined: 14 Jul 2012 20:23
Location: France
Status: Offline

Simple application de téléchargement de Nas4Free

#1

Post by velivole18 » 25 Oct 2015 12:03

Bonjour,

Voici une petite application dans sa version 0.2 pour télécharger différents éléments de Nas4Free, écrite en zenity.
Zenity est installé par défaut sous Ubuntu, mais peut être facilement installé sur différents Linux où zenity n'y est pas par défaut.
Il existe aussi sous windows, mais il y aurait sans doute quelques adaptations à apporter au script fournit ci-dessous.
Voici la page officielle de zenity pour ceux qui s'y intéresseraient.

Pour lancer le script ci-dessous, il suffit d'ouvrir une console et de le lancer par une commande du style :

Code: Select all

$ ./nas4free-download.sh
et de suivre les options des fenêtres qui s'affichent.

Attention : le choix du répertoire de téléchargement se fait en sélectionnant le répertoire adéquat sans y entrer au moment du choix !

Cordialement.

Code: Select all

#! /bin/sh

#====================================================================================
# nas4free-download.sh pour Nas4Free (version 0.2 du 25/10/2015)
#====================================================================================
#set -x
#exec 2>/dev/null

#====================================================================================
# Précautions
#====================================================================================
precautions()
{
   zenity --info \
          --title="Informations :" \
          --no-wrap \
          --text="Faire une sauvegarde de la configuration de votre\nserveur actuel et lire le fichier readme.txt de la distribution avant\nd'installer une nouvelle version !"
}

#====================================================================================
# Aide
#====================================================================================
aide()
{
   #-------------------------------------------
   # affichage de l'aide sur ce shell
   #-------------------------------------------
   echo "<B><U>
Définition des options du menu d'accueil de nas4free-download.sh (version 0.1 du 25/08/2013) :</U></B><BR><BR>

<B><U>quitter</U></B>     : quitte ce programme<BR><BR>

<B><U>aide</U></B>        : affiche cette aide<BR><BR>

<B><U>télécharger</U></B> : télécharge une ou plusieurs distributions d'une version donnée<BR>
              sont demandés :<BR>
              - la version des distributions désirées (par exemple : 9.1.0.1.847)<BR>
              - un répertoire de téléchargement<BR>
              - les fichiers à télécharger correspondant à la version saisie<BR>
              un répertoire nommé avec le numéro de version est créé dans le répertoire de téléchargement<BR>
              puis le téléchargement s'effectue séquentiellement dans le répertoire créé sous le répertoire de téléchargement<BR>
              un fichier log est créé dans le répertoire de la version téléchargée pour chaque fichier Nas4Free téléchargé<BR><BR>

<B><U>intégrité</U></B>   : teste l'intégrité d'une ou plusieurs distributions<BR>
              la présence du bon fichier *.checksum correspondant à la version et à l'architecture est obligatoire dans le répertoire testé<BR>
              une liste de tous les fichiers présents dans le répertoire testé est affichée en premier lieu<BR>
              ensuite les tests d'intégrité ont lieu et le résultat de ces tests est ensuite affiché<BR>
              pour un fichier testé, une ligne de résultat commancant par OK indique que l'intégrité est correcte<BR>
              pour un fichier testé, une ligne de résultat commancant par !!! KO indique que l'intégrité n'est pas correcte<BR><BR>

<B><U>à propos</U></B>    : affiche l'à propos de zenity<BR><BR>

Pour contacter l'auteur \"velivole18\" ou faire des remarques sur ce script, rendez-vous sur le forum français de Nas4Free à l'adresse suivante :<BR>
http://forums.nas4free.org/viewforum.php?f=35" > ${TMP}/aide.html

   zenity --text-info \
          --width=1000 \
          --height=500 \
          --html \
          --filename=${TMP}/aide.html
}

#====================================================================================
# Télécharger
#====================================================================================
telecharger()
{
   SITE="http://freefr.dl.sourceforge.net/project/nas4free"
#   SITE="netcologne.dl.sourceforge.net"

   liste_types_processeurs="FALSE ARM Processeurs_de_la_famille_ARM FALSE Intel_Amd Processeur_de_la_famille_Intel_ou_Amd"
   PROCESSEUR=`zenity --width=500 \
                      --height=250 \
                      --list \
                      --title="Choix de la famille de processeurs" \
                      --radiolist \
                      --text="Sélectionnez l'option :" \
                      --column="Choix" \
                      --column="Options" \
                      --column="Informations" \
                      $liste_types_processeurs`
   if (test ${#PROCESSEUR} -eq 0)
      then return
   fi
   
   liste_maturites="FALSE ALPHA version_ALPHA_de_la_distribution FALSE BETA version_BETA_de_la_distribution FALSE NORMALE version_NORMALE_de_la_distribution"
   MATURITE=`zenity --width=500 \
                    --height=250 \
                    --list \
                    --title="Choix de la maturité de la distribution" \
                    --radiolist \
                    --text="Sélectionnez l'option :" \
                    --column="Choix" \
                    --column="Options" \
                    --column="Informations" \
                    $liste_maturites`
   if (test ${#MATURITE} -eq 0)
      then return
   fi
   
   VERSION=`zenity --entry --text="version de la distribution (par ex. 9.1.0.1.847) :" --entry-text=$VERSION`
   VERSION_MAJEURE=`echo $VERSION | cut -d"." -f"-4"`
   VERSION_MINEURE=`echo $VERSION | cut -d"." -f"5-"`
   if (test ${#VERSION} -eq 0)
      then return
   fi

   if ([ $PROCESSEUR = ARM ])
      then liste_fichiers="FALSE NAS4Free-rpi2-embedded-${VERSION}.img.xz rpi2-embedded \
                           FALSE NAS4Free-rpi2-SD-${VERSION}.img rpi2-SD \
                           FALSE NAS4Free-rpi2-${VERSION}.checksum rpi2 \
                           FALSE NAS4Free-rpi-embedded-${VERSION}.img.xz rpi-embedded \
                           FALSE NAS4Free-rpi-SD-${VERSION}.img rpi-SD \
                           FALSE NAS4Free-oc1-embedded-${VERSION}.img.xz oc1-embedded \
                           FALSE NAS4Free-rpi-${VERSION}.checksum rpi \
                           FALSE NAS4Free-oc1-SD-${VERSION}.img oc1-SD \
                           FALSE NAS4Free-oc1-${VERSION}.checksum oc1_Checksum"
   fi

   if ([ $PROCESSEUR = Intel_Amd ])
      then liste_fichiers="FALSE NAS4Free-x86-embedded-${VERSION}.img.xz x86_Embedded \
                           FALSE NAS4Free-x86-LiveUSB-${VERSION}.img.gz x86_LiveUSB \
                           FALSE NAS4Free-x86-LiveCD-${VERSION}.iso x86_LiveCD \
                           FALSE NAS4Free-x86-${VERSION}.checksum x86_Checksum \
                           FALSE NAS4Free-x64-embedded-${VERSION}.img.xz x64_Embedded\
                           FALSE NAS4Free-x64-LiveUSB-${VERSION}.img.gz x64_LiveUSB \
                           FALSE NAS4Free-x64-LiveCD-${VERSION}.iso x64_LiveCD \
                           FALSE NAS4Free-x64-${VERSION}.checksum x64_Checksum \
                           FALSE readme.txt Readme"
   fi
 
   FICHIERS=`zenity --width=500 --height=400 --list --multiple --title="liste des fichiers de distributions à télécharger" --checklist --separator=" " --text="Sélectionnez les fichiers :" --column="Choix" --column="Fichiers" --column="Informations" $liste_fichiers` 
   if (test ${#FICHIERS} -eq 0)
      then return
   fi

   REP=`zenity --file-selection --directory --save --title="choix du répertoire de téléchargement : "`
   if (test ${#REP} -eq 0)
      then return
   fi
   if !(test -d "${REP}/${VERSION}")
      then mkdir -p "${REP}/${VERSION}"
   fi
   
   nb_fichiers_a_telecharger=0
   for i in ${FICHIERS}
   do nb_fichiers_a_telecharger=`echo "${nb_fichiers_a_telecharger}+1" | bc`
   done
   pas=`echo "100/${nb_fichiers_a_telecharger}" | bc`
#   progression=${pas}
   progression=0
   (
    for i in ${FICHIERS}
#    do echo "# ${REP}/${VERSION}/${i} en cours de téléchargement ..."
#    do echo "# ${i},(distrib. ${MATURITE}), en cours de téléchargement (`echo "${progression}+1" | bc`/${nb_fichiers_a_telecharger}) ..."
    do echo "# ${i},(distrib. ${MATURITE}), en cours de téléchargement (`echo "${progression}+1" | bc`% téléchargés) ..."
       echo "${progression}"
       if ([ $PROCESSEUR = ARM ])
          then wget -P"${REP}/${VERSION}" -o"${REP}/${VERSION}/${i}.log" ${SITE}/NAS4Free-ARM/${VERSION}/${i}
       fi
       if ([ $PROCESSEUR = Intel_Amd ])
          then if ([ $MATURITE = ALPHA ])
                  then wget -P"${REP}/${VERSION}" -o"${REP}/${VERSION}/${i}.log" ${SITE}/NAS4Free-Alpha/NAS4Free-${VERSION_MAJEURE}/${VERSION}/${i}
                  else if ([ $MATURITE = BETA ])
                          then wget -P"${REP}/${VERSION}" -o"${REP}/${VERSION}/${i}.log" ${SITE}/NAS4Free-Beta/NAS4Free-${VERSION_MAJEURE}/${VERSION}/${i}
                          else wget -P"${REP}/${VERSION}" -o"${REP}/${VERSION}/${i}.log" ${SITE}/NAS4Free-${VERSION_MAJEURE}/${VERSION}/${i}
                       fi
               fi
       fi    
       progression=`echo "${progression}+${pas}" | bc`
    done
   )  | zenity --progress \
               --title="telechargement du fichier :" \
               --text="${progression} : ${REP}/${VERSION}/${i} (distrib. ${MATURITE})" \
               --percentage=0 \
               --auto-kill \
               --auto-close 
   precautions
}

#====================================================================================
# intégrité
#====================================================================================
integrite()
{
   REP=`zenity --file-selection --directory --save --title="choix du répertoire de la distribution : "`
   if (test ${#REP} -eq 0)
      then return
   fi
   ls ${REP}/NAS4Free*   > ${TMP}/liste_fichiers.txt 2>/dev/null
   ls ${REP}/readme.txt >> ${TMP}/liste_fichiers.txt 2>/dev/null
   zenity --text-info \
          --width=800 \
          --height=300 \
          --title="Liste des fichiers Nas4Free présents dans le répertoire ${REP} :" \
          --no-wrap \
          --filename=${TMP}/liste_fichiers.txt
         
   nb_fichiers_a_controler=`cat ${TMP}/liste_fichiers.txt | egrep "*img|*iso" | wc -l`
   pas=`echo "100/${nb_fichiers_a_controler}" | bc`
   progression=${pas}
   (
      for architecture in x86 x64
      do if (test -e ${REP}/*${architecture}*checksum)
            then for i in *${architecture}*img.xz *${architecture}*img.gz *${architecture}*iso
                 do if test `ls -l ${REP}/${i} | wc -l 2>/dev/null` -ne 0
                       then for j in `ls ${REP}/${i}`
                            do k=`basename ${j}`
                               echo "# ${k}"
                               echo ${progression}
                               if [ `sha256sum ${j} | cut -f1 -d' '` = `cat ${REP}/NAS4Free-${architecture}-*.checksum | grep ${k} | cut -f4 -d' '` ]
                                  then echo OK pour ${j}     >> ${TMP}/integrite.txt
                                  else echo !!! KO pour ${j} >> ${TMP}/integrite.txt
                               fi
                               progression=`echo "${progression}+${pas}" | bc`
                            done
                    fi
                 done
         fi
      done
   ) | zenity --progress \
              --title="test d'intégrité du fichier :" \
              --text="${progression} : ${k}" \
              --percentage=0 \
              --auto-close \
              --auto-kill
              
   if ((test -e ${REP}/NAS4Free-x86-*.checksum) || (test -e ${REP}/NAS4Free-x64-*.checksum))
      then zenity --text-info \
                  --width=800 \
                  --height=250 \
                  --title="Résultats des tests d'intégrité pour les distributions trouvées dans le répertoire ${REP} :" \
                  --no-wrap \
                  --filename=${TMP}/integrite.txt
      else zenity --warning \
                  --title="Problème :" \
                  --no-wrap \
                  --text="Absence de fichier checksum, impossible de tester l'intégrité des fichiers de distribution !"
   fi
   if test -f ${TMP}/liste_fichiers.txt
      then rm ${TMP}/liste_fichiers.txt
   fi
   if test -f ${TMP}/integrite.txt
      then rm ${TMP}/integrite.txt
   fi
   precautions
}

#-------------------------------------------------------------------------------
# A propos de Zenity
#-------------------------------------------------------------------------------
a_propos()
{
   zenity --about
}

#===============================================================================
# Programme Principal
#===============================================================================
if !(test -d "/tmp")
   then mkdir ./tmp
        TMP="./tmp"
   else TMP=/tmp
fi

VERSION=""
VERSION_MAJEURE=""
VERSION_MINEURE=""

#-------------------------------------------
# menu principal
#-------------------------------------------
liste_menu_principal="FALSE quitter quitte_l_application FALSE aide affiche_l_aide_de_l_application FALSE telecharger télécharge_une_distribution FALSE integrite vérifie_l_intégrité_d_une_distribution FALSE a_propos A_propos_de_zenity"
choix="A"
while ((test ${#choix} -gt 0) && [ $choix != quitter ])
do choix=`zenity --width=500 \
                 --height=250 \
                 --list \
                 --title="Accueil de l'utilitaire de téléchargement de Nas4Free" \
                 --radiolist \
                 --text="Sélectionnez l'option :" \
                 --column="Choix" \
                 --column="Options" \
                 --column="Informations" \
                 $liste_menu_principal`
   if (test ${#choix} -gt 0)
      then if ([ $choix != quitter ])
              then ${choix}
           fi
   fi
done
#-------------------------------------------

if [ "$TMP" = "./tmp" ]
   then rm -Rf ./tmp
fi
#set +x

11.2.0.4 - Omnius (revision 6026) x64-embedded
111909 RSDT1411 AMD Athlon(tm) 64 Processor 4000+ 4096MiB RAM - HDD 2 x 6 To in ZFS mirroring + 2 x (2 x 4To in ZFS mirroring) - SSD 32Go - UPS EATON Ellipse MAX 1100.

Post Reply

Return to “Trucs et Astuces”