Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 05-05-2015 09:01:49

smolski
administrateur quasi...modo
Lieu : AIN
Distrib. : 8 (jessie) 64 bits + backports
Noyau : 4.6.0-0.bpo.1-amd64
(G)UI : gnome 3.14.1
Inscription : 21-10-2008

script modification ligne dans fichier web

J'ai un bô script bash pour modifier la ligne web local de mon site afin de permettre le telechargement d'un fichier.mpeg depuis le site directement.
Voici l'bébé tel qu'il fonctionne actuellement :


[...]

### Gestion des arguments ###
# Référence du concours :
refconcours=$1
# Client
refclient=$2
#Reference video
refvideo=$3

find ${DIRNET} -type f -iname "liste_video*.php" -exec sed -i '/'$(printf '%04g' ${refvideo})'/'s,'<td>','<td><a href="http://adresse_serveur/'${refconcours}'/tel-'${refclient}'/'$(printf '%04g' ${refvideo})'.mpeg">', {} \;
 


Je souhaite que l'argument refvideo=$3 puisse se démultiplier en plusieurs numéros de videos.

Exemple :
Ma ligne de commande pour une video :

monscript 150416-39 jojo 1



Me donne bien la modification souhaitée pour la video n°0001.mpeg.

Je voudrai lancer le script pour plusieurs videos en même temps, comme ceci :

monscript 150416-39 jojo 1 105 842 65


Et donc des modifications de lignes web différentes, adaptées chacune au numéro de la vidéo visée.


Y'a't'y moyen d'y faire, ça ? big_smile

Edit :
J'ai essayé via l'utilisation de shift ainsi :


[...]

### Gestion des arguments ###
# Référence du concours :
refconcours=$1
# Client
refclient=$2
#Reference video
refvideo=$3

shift 2
refvideo=$@

find ${DIRNET} -type f -iname "liste_video*.php" -exec sed -i '/'$(printf '%04g' ${refvideo})'/'s,'<td>','<td><a href="http://adresse_serveur/'${refconcours}'/tel-'${refclient}'/'$(printf '%04g' ${refvideo})'.mpeg">', {} \;
 


Ce qui démultiplie bien l'argument refvideo, mais il les colle les uns aux autres et, par exemple, pour les videos N°1 et N°2 lancées conjointement :

monscript 150416-39 jojo 1 2


j'obtiens un seul numéro de refvideo transcrit : 00010002.mpeg, ce qui l'fait pas.

Dernière modification par smolski (05-05-2015 09:13:18)


"Définition d'eric besson : S'il fallait en chier des tonnes pour devenir ministre, il aurait 2 trous du cul." - JP Douillon
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

Hors ligne

#2 05-05-2015 10:22:23

kao
Modérateur
Distrib. : Testing
Noyau : Linux 4.quelquechose
(G)UI : Gnome 3
Inscription : 28-09-2012
Site Web

Re : script modification ligne dans fichier web

Sans avoir essayé, je dirais qu'il faudrait passer par une liste et une boucle comme ici : http://www.commentcamarche.net/forum/af … able-liste

#!/bin/sh  

list=( "tata 1" "toto 1" "titi 1" )  
for element in "${list[@]}"    
do  
        echo "element =" $element  
done





Il faut juste que tu arrives à charger le $3 comme une liste
Peut être en chargeant tout d'un coup :

monscript 150416-39 jojo 1,105,842,65


$3 est chargé avec 1,105,842,65
puis tu peux le transformer en liste avec quelque chose comme ça, avant d'exécuter la boucle for :

 echo $3 | sed "s/,/\" \" /g" etc...



Dés qu'il y a de la répétition, il faut passer par une boucle.

Hors ligne

#3 05-05-2015 10:24:07

smolski
administrateur quasi...modo
Lieu : AIN
Distrib. : 8 (jessie) 64 bits + backports
Noyau : 4.6.0-0.bpo.1-amd64
(G)UI : gnome 3.14.1
Inscription : 21-10-2008

Re : script modification ligne dans fichier web

Ok kao, je teste et fait le retour. Merci smile

Pour le lien :

lien a écrit :

La discussion à laquelle vous essayez d'accéder n'existe pas !


et il y a une demande d'inscription.... pas cool ça pour de l'entraide. big_smile

Dernière modification par smolski (05-05-2015 10:25:57)


"Définition d'eric besson : S'il fallait en chier des tonnes pour devenir ministre, il aurait 2 trous du cul." - JP Douillon
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

Hors ligne

#4 05-05-2015 10:29:29

kao
Modérateur
Distrib. : Testing
Noyau : Linux 4.quelquechose
(G)UI : Gnome 3
Inscription : 28-09-2012
Site Web

Re : script modification ligne dans fichier web

Pas de soucis pour moi :

http://www.commentcamarche.net/forum/affich-24198130-bash-boucle-for-avec-une-variable-liste


même en anonyme.

Hors ligne

#5 05-05-2015 10:29:38

jéjé
Adhérent(e)
Lieu : lyon
Distrib. : debian jessie 8
Noyau : Linux 3.16.0-4-amd64
(G)UI : KDE
Inscription : 02-11-2014

Re : script modification ligne dans fichier web

smolski a écrit :

Ok kao, je teste et fait le retour. Merci smile

Pour le lien :

lien a écrit :

La discussion à laquelle vous essayez d'accéder n'existe pas !


et il y a une demande d'inscription.... pas cool ça pour de l'entraide. big_smile


bonjour,
tu parle pour le lien de ccm ? , parce que si c'est le cas pour moi sa marche pas d'inscription .

Hors ligne

#6 05-05-2015 10:38:32

smolski
administrateur quasi...modo
Lieu : AIN
Distrib. : 8 (jessie) 64 bits + backports
Noyau : 4.6.0-0.bpo.1-amd64
(G)UI : gnome 3.14.1
Inscription : 21-10-2008

Re : script modification ligne dans fichier web

Bon, ça marche maintenant, je sais pas ce qui s'est passé. cool

"Définition d'eric besson : S'il fallait en chier des tonnes pour devenir ministre, il aurait 2 trous du cul." - JP Douillon
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

Hors ligne

#7 06-05-2015 15:58:36

smolski
administrateur quasi...modo
Lieu : AIN
Distrib. : 8 (jessie) 64 bits + backports
Noyau : 4.6.0-0.bpo.1-amd64
(G)UI : gnome 3.14.1
Inscription : 21-10-2008

Re : script modification ligne dans fichier web

J'y arrive pas.
Abandon. cool

"Définition d'eric besson : S'il fallait en chier des tonnes pour devenir ministre, il aurait 2 trous du cul." - JP Douillon
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

Hors ligne

#8 06-05-2015 16:23:45

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 4.8.10
(G)UI : openbox
Inscription : 26-08-2010

Re : script modification ligne dans fichier web

Salut je pense que ça devrait faire l'affaire :


[...]

### Gestion des arguments ###
# Référence du concours :
refconcours=$1
# Client
refclient=$2
shift 2 # on vire les deux première valeurs de $@
#Reference video
for refvideos in "$@"; do

find ${DIRNET} -type f -iname "liste_video*.php" -exec sed -i '/'$(printf '%04g' ${refvideo})'/'s,'<td>','<td><a href="http://adresse_serveur/'${refconcours}'/tel-'${refclient}'/'$(printf '%04g' ${refvideo})'.mpeg">', {} \;

done

 


Voilà, c'est tout. La seule chose c'est qu'il faire la boucle
sur $@ et virer les premières valeurs avec shift.

EDIT: Ne marche pas, car je n'avais pas bien lu. Tu passes tes arguments séparer par des virgules. Mon
script fonctionnerait si tu passais tes arguments séparés par des espaces…

Dernière modification par enicar (06-05-2015 20:18:27)


La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

#9 06-05-2015 16:31:02

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 4.8.10
(G)UI : openbox
Inscription : 26-08-2010

Re : script modification ligne dans fichier web

Remarque supplémentaire, faire une ligne telle que ton find avec sed, ça rend le script bigrement difficile à lire. D'un autre côté je n'ai pas de solution à te proposer, enfin si, j'aurai mis le find dans une fonction, mais ça ne change pas  la longueur de la ligne tongue

Dernière modification par enicar (06-05-2015 17:17:33)


La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

#10 06-05-2015 17:11:50

smolski
administrateur quasi...modo
Lieu : AIN
Distrib. : 8 (jessie) 64 bits + backports
Noyau : 4.6.0-0.bpo.1-amd64
(G)UI : gnome 3.14.1
Inscription : 21-10-2008

Re : script modification ligne dans fichier web

Merci de ton attention enikar smile
Je vais repousser ce problème dans les lumbes de mes temps libres... big_smile

Dernière modification par smolski (06-05-2015 17:12:29)


"Définition d'eric besson : S'il fallait en chier des tonnes pour devenir ministre, il aurait 2 trous du cul." - JP Douillon
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

Hors ligne

#11 06-05-2015 17:18:39

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 4.8.10
(G)UI : openbox
Inscription : 26-08-2010

Re : script modification ligne dans fichier web

@smolski Sinon, ça marche le parcours des arguments ?

La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

#12 06-05-2015 17:22:36

smolski
administrateur quasi...modo
Lieu : AIN
Distrib. : 8 (jessie) 64 bits + backports
Noyau : 4.6.0-0.bpo.1-amd64
(G)UI : gnome 3.14.1
Inscription : 21-10-2008

Re : script modification ligne dans fichier web

Oui enikar, les arguments fonctionnent au poil, pour mémoire :


[...]

### Gestion des arguments ###
# Référence du concours :
refconcours=$1
# Client
refclient=$2
#Reference video
refvideo=$3

shift 2
refvideo=$@

find ${DIRNET} -type f -iname "liste_video*.php" -exec sed -i '/'$(printf '%04g' ${refvideo})'/'s,'<td>','<td><a href="http://adresse_serveur/'${refconcours}'/tel-'${refclient}'/'$(printf '%04g' ${refvideo})'.mpeg">', {} \;
 


Avec une seule video marche.


"Définition d'eric besson : S'il fallait en chier des tonnes pour devenir ministre, il aurait 2 trous du cul." - JP Douillon
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

Hors ligne

#13 06-05-2015 17:30:05

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 4.8.10
(G)UI : openbox
Inscription : 26-08-2010

Re : script modification ligne dans fichier web

pfff… il faut utiliser le for… Je te mets la bonne façon de procéder, et tu modifies tout de tel façon que c'est bancal…
Avec le for, ça marche avec un fichier, deux fichiers, etc… avec ton truc, ça ne marche que pour un fichier !

La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

#14 06-05-2015 17:33:15

smolski
administrateur quasi...modo
Lieu : AIN
Distrib. : 8 (jessie) 64 bits + backports
Noyau : 4.6.0-0.bpo.1-amd64
(G)UI : gnome 3.14.1
Inscription : 21-10-2008

Re : script modification ligne dans fichier web

Ah zut !
Mal recopié le bouzin alors !
Je refais des tests ce soir.
Merci smile

"Définition d'eric besson : S'il fallait en chier des tonnes pour devenir ministre, il aurait 2 trous du cul." - JP Douillon
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

Hors ligne

#15 06-05-2015 17:37:45

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 4.8.10
(G)UI : openbox
Inscription : 26-08-2010

Re : script modification ligne dans fichier web

Si tu avais juste copié/collé,  tu aurais eu directement le bon code… tongue

La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

#16 06-05-2015 18:04:46

kao
Modérateur
Distrib. : Testing
Noyau : Linux 4.quelquechose
(G)UI : Gnome 3
Inscription : 28-09-2012
Site Web

Re : script modification ligne dans fichier web

Facile smile

#!/bin/sh
### Gestion des arguments ###
#ligne de commande type : monscript 150416-39 jojo 1,2,45
# Référence du concours :
refconcours=$1
# Client
refclient=$2
#Reference video
refvideo=$3


list=$(echo  $refvideo  | sed "s/,/ /g" )
echo "liste des fichiers à traiter : " $list
echo "----------------"

for element in ${list}
do
        echo "Transformation du fichier =" $element  
  echo find ${DIRNET} -type f -iname "liste_video*.php" -exec sed -i '/'$(printf '%04g' ${element})'/'s,'<td>','<td><a href="http://adresse_serveur/'${refconcours}'/tel-'${refclient}'/'$(printf '%04g' ${element})'.mpeg">', {} \;
done
echo "----------------"
echo "C'est fini !"
 


J'ai laissé un echo devant la commande pour pouvoir faire les tests.

Hors ligne

#17 06-05-2015 19:15:59

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 4.8.10
(G)UI : openbox
Inscription : 26-08-2010

Re : script modification ligne dans fichier web

Ah oui, j'avais pas vu qu'il fallait virer les ,… bon sang je devrais
prendre le temps de lire.
Donc je propose la solution suivante :


[...]

### Gestion des arguments ###
# Référence du concours :
refconcours=$1
# Client
refclient=$2
shift 2
#Reference video
OLD_IFS=IFS
IFS=','
for refvideo in $@; do

find ${DIRNET} -type f -iname "liste_video*.php" -exec sed -i '/'$(printf '%04g' ${refvideo})'/'s,'<td>','<td><a href="http://adresse_serveur/'${refconcours}'/tel-'${refclient}'/'$(printf '%04g' ${refvideo})'.mpeg">', {} \;

done
IFS=OLD_IFS
 


Voilà wink Le shitf permet de virer les 2 premiers arguments. Après le
IFS=',' permet de demander à bash d'exploser la chaine dans $@ en
fonction des ','…


EDIT: Donc cette version fonctionne avec un argument $3 == '1,2,3' par exemple. L'autre version fonctionne
avec $3 == '1', $4 == '2', $5 == '3'… à toi de choisir comment tu veux faire wink

Dernière modification par enicar (06-05-2015 20:24:00)


La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

#18 06-05-2015 20:51:04

smolski
administrateur quasi...modo
Lieu : AIN
Distrib. : 8 (jessie) 64 bits + backports
Noyau : 4.6.0-0.bpo.1-amd64
(G)UI : gnome 3.14.1
Inscription : 21-10-2008

Re : script modification ligne dans fichier web

Ah !
Merci les amis !

Ce soir je touche à rien, je suis kaput passé 18h.... L'alcool, les drogues et surtout les femmes.. enfin une surtout ! big_smile
Retour des tests demain au matin.

"Définition d'eric besson : S'il fallait en chier des tonnes pour devenir ministre, il aurait 2 trous du cul." - JP Douillon
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

Hors ligne

#19 06-05-2015 21:02:19

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : script modification ligne dans fichier web

smolski a écrit :

Retour des tests demain au matin.

Les tests de substances ou bien ... ?  big_smile


I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#20 06-05-2015 21:35:30

smolski
administrateur quasi...modo
Lieu : AIN
Distrib. : 8 (jessie) 64 bits + backports
Noyau : 4.6.0-0.bpo.1-amd64
(G)UI : gnome 3.14.1
Inscription : 21-10-2008

Re : script modification ligne dans fichier web

'foiré ! tongue

"Définition d'eric besson : S'il fallait en chier des tonnes pour devenir ministre, il aurait 2 trous du cul." - JP Douillon
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

Hors ligne

#21 07-05-2015 08:36:30

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : script modification ligne dans fichier web

lol

I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

Pied de page des forums