167 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			167 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
#!/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
 | 
						||
# -----------------------------------------------------------
 | 
						||
# **********************************************************************************************
 | 
						||
 |