[bash] boucle wget

Fermé
Laurane85 Messages postés 7 Date d'inscription mercredi 7 septembre 2016 Statut Membre Dernière intervention 11 septembre 2016 - Modifié par mamiemando le 8/09/2016 à 10:23
Laurane85 Messages postés 7 Date d'inscription mercredi 7 septembre 2016 Statut Membre Dernière intervention 11 septembre 2016 - 11 sept. 2016 à 20:19
Bonjour

J'ai fait un script qui permet de télécharger un fichier via une variable $var en faisant

#!/bin/bash
echo -e "ENTRER le sufixe de l'URL : "
read var
wget -i [http://127.0.0.1/]$var
mkdir caca
mv $var caca/


Cela fonctionne bien mais je voudrais améliorer le truc en permettant de rentrer plusieurs fois un suffixe pour télécharger a la suite et mettre le premier suffixe télechargé dans le dossier caca/, le second suffixe dans un dossier caca2/ etc

Et en disant au bout d'un certain nombre de téléchargements de dire STOP pour que le script fasse le travail

Quelqu'un aurait une idée?

Merci de votre aide

10 réponses

mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
8 sept. 2016 à 10:21
Bonjour,

Il me paraît plus simple d'utiliser l'option -O pour dire à wget où écrire le fichier une fois le répertoire de destination créé.

Ensuite pour répondre à ton problème, il suffit d'écrire un script shell capable de lire n paramètres d'entrées :
https://forums.commentcamarche.net/forum/affich-37619992-bash-les-arguments-parametres

Bonne chance
0
Laurane85 Messages postés 7 Date d'inscription mercredi 7 septembre 2016 Statut Membre Dernière intervention 11 septembre 2016
8 sept. 2016 à 10:40
Ok merci pour ta réponse
Pour le wget -O pas de problème par contre pour la boucle je galère si vous avez une idée je suis preneur
0
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
8 sept. 2016 à 13:16
hello
exemple de boucle, on termine avec une réponse vide
i=1; while read -p "ENTRER le sufixe de l'URL : " var && [[ -n "$var" ]]; do wget -O fichier$((i++)) http:/xxx/$var; done
0
Utilisateur anonyme
8 sept. 2016 à 14:15
ou encore :

#!/bin/bash
while [ "$#" -gt 0 ];do echo "wget http://$1"; shift; done


$./sc.sh placard maison singe
wget http://placard
wget http://maison
wget http://singe
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Laurane85 Messages postés 7 Date d'inscription mercredi 7 septembre 2016 Statut Membre Dernière intervention 11 septembre 2016
8 sept. 2016 à 23:46
Merci pour l'aide les gars

Mais comment je peux intégrer une boucle sur la creation de plusieurs dossiers après avoir telecharger mes fichiers des differentes urls

Exemple : fichier1 telechargé va dans le dossier1
Fichier dans dossier2
Etc

Merci pour l'aide
0
En reprenant le code de dubcek et en ajoutant un mkdir dossier
i=1; 
while read -p "ENTRER le suffixe de l'URL : " var && [[ -n "$var" ]];
do
mkdir dossier$i
wget -O dossier$i/fichier$i "http:/xxx/$var"
i=$((i++))
done


Problèmes éventuels : les téléchargements vont s'effectuer un à un, l'un après l'autre ; pas de test si problème de création du dossier et/ou du fichier, rien de prévu si le wget échoue ; etc.
0
Laurane85 Messages postés 7 Date d'inscription mercredi 7 septembre 2016 Statut Membre Dernière intervention 11 septembre 2016
9 sept. 2016 à 10:14
Merci pour ton aide gnu je testerais ca soir
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
9 sept. 2016 à 17:27
Salut,

Parfois il existe des outils tout en un, il suffit juste de se pencher dans les pages de man.
cURL
peut faire bien mieux que
wget
;-)

$ ls

$ curl -n ftp://xxxxxx.fr/Test/[1-3].png --create-dirs -o "rep#1/#1.png"

[1/3]: ftp://xxxxxx.fr/Test/1.png --> rep1/1.png
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 209k 100 209k 0 0 507k 0 --:--:-- --:--:-- --:--:-- 506k

[2/3]: ftp://xxxxxx.fr/Test/2.png --> rep2/2.png
100 124k 100 124k 0 0 342k 0 --:--:-- --:--:-- --:--:-- 342k

[3/3]: ftp://xxxxxx.fr/Test/3.png --> rep3/3.png
100 202k 100 202k 0 0 500k 0 --:--:-- --:--:-- --:--:-- 500k

$ tree
.
|-- rep1
| `-- 1.png
|-- rep2
| `-- 2.png
`-- rep3
`-- 3.png

3 directories, 3 files



;-))

0
Laurane85 Messages postés 7 Date d'inscription mercredi 7 septembre 2016 Statut Membre Dernière intervention 11 septembre 2016
11 sept. 2016 à 19:41
malgré ton script gnu- j'ai toujours pas réussi.

#!/bin/bash./
i=1; while read -p ID: var && [[ -n $var ]]; do mkdir dossier$i; wget -i http://url/$var; i=$((i++))
done

Au bout du second téléchargement j'ai le message :

") erreur de syntaxe : opérateur arithmétique non valable (le symbole erroné est "
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
11 sept. 2016 à 19:57
#!/bin/bash./
i=1; while read -p "ID:" var && [[ -n $var ]];
do mkdir dossier$i;
wget -i http://url/$var;
((i++))
done
0
Laurane85 Messages postés 7 Date d'inscription mercredi 7 septembre 2016 Statut Membre Dernière intervention 11 septembre 2016
11 sept. 2016 à 20:06
J'ai l'erreur :

./test.sh: ligne 3: erreur de syntaxe près du symbole inattendu « $'\r' »
'/test.sh: ligne 3: `((i++))
0
Laurane85 Messages postés 7 Date d'inscription mercredi 7 septembre 2016 Statut Membre Dernière intervention 11 septembre 2016
11 sept. 2016 à 20:19
j'ai remplacé par : let i=$((i++))
ca a l'air de faire le taff

Merci à tous !
0