#!/bin/sh ################################################################################################ ## ## Nom: wget_list ## ## Licence: Creative Commons ## ## Comportement: ## Permet de récupérer tous les liens listés dans un fichier en lancant plusieurs wget ## en parallèle. ## Le fichier qui contient les liens est le premier paramètre passé au script. ## Le dossier où enregistré tous les liens correspond au deuxième paramètre passé au script, ## ou à un dossier prédéfini. ## ## ## ################################################################################################ ## ## Date de création: 03/06/2010 ## ## Auteur: Gardouille ## ## ## Dernière modifications: ## O3/O6/2010: - Création # ********************************************************************************************** ## 02/01/2010: - ## - # ********************************************************************************************** ## ## ## ################################################################################################ # ********************************************************************************************** # # Variables globales # # ----------------------------------------------------------- # Fichier qui contient la liste des liens à télécharger: "${1}" list_url=${1} # Répertoire où vont être stockés les fichiers téléchargés save_dir=${2} # Fin des variables globales # ----------------------------------------------------------- # ********************************************************************************************** # ********************************************************************************************** # # Fonctions globales # # ----------------------------------------------------------- # Divers echos ... echoi() { echo " (ii) $*" >> "${log}" ; } echok() { echo " (ok) $*" >> "${log}" ; } echow() { echo " (!!) $*" >> "${log}" ; } echnk() { echo " (EE) $*" >> "${log}" ; } # Fonction d'aide help() { cat << EOF Description: Ce script permet de télécharger tous les liens stockés dans un fichier texte. Utilisation: wget_list FICHIER_URL DOSSIER_OU_SAUVEGARDER Arguments: FICHIER_URL: Chemin du fichier qui contient la liste des liens à télécharger DOSSIER_OU_SAUVEGARDER: Dossier où vont être sauvegardés les fichiers téléchargés Options: -h, --help, help Affiche cette aide. EOF } # Fin des fonctions globales # ----------------------------------------------------------- # ********************************************************************************************** # ********************************************************************************************** # # Programme principale # # ----------------------------------------------------------- ## Gestion des arguments: # Si l'utilisateur veut afficher l'aide if [ "${1}" = "-h" ] || [ "${1}" = "--help" ] || [ "${1}" = "help" ] then # On appelle la fonction help help # Et on quitte le script exit 0 fi # Vérification du nombre d'arguments: case $# in 2 ) # 2 arguments # Si le premier argument n'est pas un fichier if [ ! -f "${1}" ] then echo "!!ERREUR: mauvais premier argument!!" # On affiche l'aide help # Puis on quitte le script exit 1 # Sinon, si le deuxième argument n'est pas un dossier elif [ ! -d "${2}" ] then echo "!!ERREUR: mauvais deuxième argument!!" # On affiche l'aide help # Et on termine le script exit 1 # Sinon, c'est que tous les arguments sont corrects else echo "Analyse de ${1} ..." fi ;; 0 ) # 0 argument echo "!!ERREUR: aucun argument présent!!" # On affiche l'aide help # Et on termine le script exit 1 ;; * ) # Plus d'un argument echo "ERREUR: Vous ne pouvez pas mettre plus de deux arguments" # On affiche l'aide help # Et on termine le script exit 1 ;; esac # Fin de la gestion des arguments # On vérifie que le dossier où vont être sauvegardés les fichiers existe [ ! -d "${save_dir}" ] && mkdir -p "${save_dir}" # On se place dans le dossier où sauvegarder les fichiers télécharger cd ${save_dir} # On télécharge les liens contenu dans le fichier # Options: # -n 1: le nombre maximum de paramètre envoyé est de 1 # -P 10: wget sera lancé 10 fois (en parallèle) cat ${list_url} | xargs -n -P 10 wget # On revient au dossier précédent cd - > /dev/null exit 0 # Fin de la boucle principale # ----------------------------------------------------------- # **********************************************************************************************