Re: Bash : quelques petites questions...

2012-05-13 Par sujet Denis Mugnier

Bonjour;

Le 04/05/2012 18:10, David BERCOT a écrit :

Le Fri, 4 May 2012 18:05:19 +0200,
"JF Straeten"  a écrit :

Alors, voici un script que j'exécute directement sur l'ESX :
#!/bin/sh
OLDIFS="$IFS"
IFS=$'\n'
monpath="/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 -
Test d'installation De"


Un truc bête, mais pour jouer avec IFS comme tu le fais, je crois qu'il 
faut être dans bash et pas dans sh ;o)

donc remplaçer

#!/bin/sh

par

#!/bin/bash

voila mes 2 cents...

Denis

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: http://lists.debian.org/4faf6cb6.6000...@orange.fr



Re: Bash : quelques petites questions...

2012-05-12 Par sujet Sébastien MARQUE

Bonjour,

j'arrive un peu tard, mais j'espère pas trop :)

IFSbackup=UFS
IFS=$(echo -ne "\n\b")
for monfic in $(ls -1 monrep); do echo ${monfic}; done
IFS=IFSbackup

devrait faire le job, l'IFS étant désormais la fin de ligne (assurée par 
l'option -1 de ls).


Hope this helps.

seb


Le 04/05/2012 17:48, Stephane Ascoet a écrit :

Le vendredi 4 mai 2012 17:42:23, David BERCOT a ecrit :


Et comme résultat, j'ai des retours à la ligne à chaque "n" ;-) :


Il doit y avoir une erreur dans la syntaxe du IFS. C'est tire d'une astuce de
Denis Bodor dans GNU/LInux Magazine France Hors-Serie 34. Les petites fautes
de ce style sont helas frequentes :-(
Et sinon, il y a une liste speciale pour le scriptage pour eviter de polluer
celle-ci...


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: http://lists.debian.org/4fae1abd.3020...@free.fr



Re: Bash : quelques petites questions...

2012-05-04 Par sujet Jérôme
Le trolldi 04 mai 2012 à 16:46 +0200, Bruno Richard a écrit :

> et avec une syntaxe de ce style ? ssh serveur 'for i in `ls /tmp/`;do
> echo $i;done' 
> 
> les ' permettent de banaliser les caractères i.e. empêcher le shell
> courant d'interpreter les caractères spéciaux et notamment `et $ les `
> permettent d'exécuter la commande ls /tmp et de renvoyer son résultat
> au for. 

Oui, sauf qu'il m'a bien semblé voir dans le manuel que les `` étaient
"deprecated" donc à éviter.


-- 
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: http://lists.debian.org/1336150825.12012.40.ca...@jisui.aranha.ici



Re: Bash : quelques petites questions...

2012-05-04 Par sujet David BERCOT
Le Fri, 4 May 2012 18:05:19 +0200,
"JF Straeten"  a écrit :
>> Alors, voici un script que j'exécute directement sur l'ESX :
>> #!/bin/sh
>> OLDIFS="$IFS"
>> IFS=$'\n'
>> monpath="/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 -
>> Test d'installation De"
>
>Ici, tu as un retour à la ligne pour de vrai ou la ligne a été coupée
>par ton mailer ?

Non, non, ça a été coupé par Claws-Mail...

>> Et comme résultat, j'ai des retours à la ligne à chaque "n" ;-) :
>> ~ # ./test
>> /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test d'i
>> stallatio
>>  De/s47z038 - Test d'i
>> stallatio
>>  De-flat.vmdk
>> /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test d'i
>> stallatio
>>  De/s47z038 - Test d'i
>> stallatio
>>  De.vmdk
>> 
>> Ensuite, en supprimant l'IFS, il revient à la ligne à chaque blanc :
>
>Est-ce que tu ne lui dit pas justement de considérer que la ligne
>finit au "n" ?

Si, quand j'avais l'IFS...

>Qu'est-ce que ça donne avec IFS vide ?

Ben justement, là, l'IFS était vide.

Je crois que je vais m'arrêter là pour aujourd'hui ;-)
Je reprendrai la semaine prochaine...

Peut-être que, à tête reposée, ça fonctionnera mieux !

David.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: http://lists.debian.org/20120504181043.6868e756@debian-david



Re: Bash : quelques petites questions...

2012-05-04 Par sujet JF Straeten

Re,

On Fri, May 04, 2012 at 05:42:23PM +0200, David BERCOT wrote:


> Alors, voici un script que j'exécute directement sur l'ESX :
> #!/bin/sh
> OLDIFS="$IFS"
> IFS=$'\n'
> monpath="/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 -
> Test d'installation De"

Ici, tu as un retour à la ligne pour de vrai ou la ligne a été coupée
par ton mailer ?



> Et comme résultat, j'ai des retours à la ligne à chaque "n" ;-) :
> ~ # ./test
> /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test d'i
> stallatio
>  De/s47z038 - Test d'i
> stallatio
>  De-flat.vmdk
> /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test d'i
> stallatio
>  De/s47z038 - Test d'i
> stallatio
>  De.vmdk
> 
> Ensuite, en supprimant l'IFS, il revient à la ligne à chaque blanc :

Est-ce que tu ne lui dit pas justement de considérer que la ligne
finit au "n" ?

Qu'est-ce que ça donne avec IFS vide ?

A+


-- 

JFS.

-- 
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: http://lists.debian.org/20120504160519.gc23...@jones.jfs.dt



Re: Bash : quelques petites questions...

2012-05-04 Par sujet David BERCOT
Le Fri, 4 May 2012 17:48:52 +0200,
Stephane Ascoet  a écrit :
>Le vendredi 4 mai 2012 17:42:23, David BERCOT a ecrit :
>
>> Et comme résultat, j'ai des retours à la ligne à chaque "n" ;-) :
>
>Il doit y avoir une erreur dans la syntaxe du IFS. C'est tire d'une
>astuce de Denis Bodor dans GNU/LInux Magazine France Hors-Serie 34.
>Les petites fautes de ce style sont helas frequentes :-(

Oui, je suppose...

>Et sinon, il y a une liste speciale pour le scriptage pour eviter de
>polluer celle-ci...

Je viens de regarder la liste complète des listes et je ne l'ai pas
trouvé :-(
Je suis preneur si tu as des infos complémentaires...

Merci.

David.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: http://lists.debian.org/20120504175753.79bf31b7@debian-david



Re: Bash : quelques petites questions...

2012-05-04 Par sujet JF Straeten

Re,

On Fri, May 04, 2012 at 05:15:53PM +0200, David BERCOT wrote:

[...]

> >Mmmm... non, la construction avec $() (dollar + parenthèses) servait à
> >récupérer le résultat de la commande placée dedans. Pour protéger la
> >variable, il faut ${} (dollar + accolades). D'ailleurs, c'est ce que
> >tu fais ci-dessous :
> > 
> >> ssh mon_serveur_esx "for monfile in
> >> \"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
> >> d'installation De\"/*.vmdk ; do echo \"\${monfile}\" ; done"
> 
> Certes, mais là, c'est différent, non ?
> Tu me proposes de remplacer $() par ${} ?

Non, non :-)

Faire comme tu faisais avec la variable était bon. Le $() n'était là
que pour « encapsuler » le 'ls' s'il était compliqué.


> >Il y a des espaces dans les noms de tes .vmdk ?
> 
> En effet :-(

Comme l'a dit quelqu'un d'autre, pas bon en shell :-/

Je remarque aussi que le temps de chercher à quoter comme il faut
suffit souvent pour avoir un truc fonctionnel en Perl, mais ça ne
répond pas à la question ;)

 
> >Tu saurais coller un ls -l du répertoire qui les contient, avec le
> >path absolu ?
> 
> Euh oui, mais pourquoi ?

Pour essayer de comprendre ce que tu veux faire, et voir la gueule du
répertoire sur lequel tu appliques ça.


> >@David : tu ne sais pas scripter le traitement des .vmdk, et
> >appeler le script par ssh, pour voir ce que ça donne ?> Tu veux
> >dire, faire un script sur le serveur et l'appeler ensuite >
> >directement ? C'est ce que m'a suggérer Basile en mp ;-)

Oui.


> Je pourrais, mais vu que j'ai plein de serveurs à traiter, ça ne me
> convient pas trop.

Pourquoi pas ?

Tu ne pourrais pas imaginer un push du script par scp avant de
l'exécuter, par exemple ?

Genre :

scp monScript.sh root@server:~/

ssh root@server ~/monScript.sh


Tu as toujours la bonne version sur ta machine administrative et celui
qui est "injecté" sur le serveur est jetable ; tu t'en fous après et
peux même le supprimer.

C'est juste une idée ;)

A+


-- 

JFS.

-- 
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: http://lists.debian.org/20120504155441.gb23...@jones.jfs.dt



Re: Bash : quelques petites questions...

2012-05-04 Par sujet Stephane Ascoet
Le vendredi 4 mai 2012 17:42:23, David BERCOT a ecrit :

> Et comme résultat, j'ai des retours à la ligne à chaque "n" ;-) :

Il doit y avoir une erreur dans la syntaxe du IFS. C'est tire d'une astuce de 
Denis Bodor dans GNU/LInux Magazine France Hors-Serie 34. Les petites fautes 
de ce style sont helas frequentes :-(
Et sinon, il y a une liste speciale pour le scriptage pour eviter de polluer 
celle-ci...
-- 
Bien cordialement, Stephane Ascoet

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: 
http://lists.debian.org/201205041748.52408.stephane.asc...@ac-orleans-tours.fr



Re: Bash : quelques petites questions...

2012-05-04 Par sujet Stephane Ascoet
Le vendredi 4 mai 2012 17:15:53, David BERCOT a ecrit :
> >Il y a des espaces dans les noms de tes .vmdk ?
> 
> En effet :-(
Bonjour, c'est tres mal.
Et en suivant la piste de IFS? Tente "IFS=$'\n';" en tete de la commande qui a 
le moins mal fonctionne jusqu'a present
-- 
Bien cordialement, Stephane Ascoet

-- 
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: 
http://lists.debian.org/201205041726.11362.stephane.asc...@ac-orleans-tours.fr



Re: Bash : quelques petites questions...

2012-05-04 Par sujet David BERCOT
Le Fri, 4 May 2012 17:26:11 +0200,
Stephane Ascoet  a écrit :
>Le vendredi 4 mai 2012 17:15:53, David BERCOT a ecrit :
>> >Il y a des espaces dans les noms de tes .vmdk ?
>> 
>> En effet :-(
>Bonjour, c'est tres mal.
>Et en suivant la piste de IFS? Tente "IFS=$'\n';" en tete de la
>commande qui a le moins mal fonctionne jusqu'a present

Alors, voici un script que j'exécute directement sur l'ESX :
#!/bin/sh
OLDIFS="$IFS"
IFS=$'\n'
monpath="/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 -
Test d'installation De"
for monfile in `ls "$monpath"/*.vmdk | grep -v 0`
do echo "${monfile}"
done
IFS="$OLDIFS"

Et comme résultat, j'ai des retours à la ligne à chaque "n" ;-) :
~ # ./test
/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test d'i
stallatio
 De/s47z038 - Test d'i
stallatio
 De-flat.vmdk
/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test d'i
stallatio
 De/s47z038 - Test d'i
stallatio
 De.vmdk

Ensuite, en supprimant l'IFS, il revient à la ligne à chaque blanc :
~ # ./test
/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038
-
Test
d'installation
De/s47z038
-
Test
d'installation
De-flat.vmdk
/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038
-
Test
d'installation
De/s47z038
-
Test
d'installation
De.vmdk

alors que je devrais avoir :
~ # ./test
/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
d'installation De/s47z038 - Test d'installation De-flat.vmdk
/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
d'installation De/s47z038 - Test d'installation De.vmdk

David.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: http://lists.debian.org/20120504174223.655adc5a@debian-david



Re: Bash : quelques petites questions...

2012-05-04 Par sujet David BERCOT
Le Fri, 4 May 2012 16:58:12 +0200,
"JF Straeten"  a écrit :
>> >Ne serait-ce pas plutôt :
>> >for monfile in $(ls MesVdmk.*)
>> >do
>> >...
>> >done
>> >pour distribuer ta boucle sur *ce que renvoie* d'ls ?
> 
>> Alors, tout d'abord, le "ls" est effectivement superflu dans ma
>> première écriture (c'est d'ailleurs pour ça qu'il est présent dans
>> le résultat).
>
>'tention... je croyais que le "ls" était simplifié dans l'exemple,
>mais que tu utilisais en réalité des switches pour lister les fichiers
>d'une manière particulière. (Genre ls -lth pour avoir une liste
>longue, human readable et temporellement inversée.)
>
>Si c'est juste un 'ls', alors oui, autant utiliser les jokers du shell
>et ne pas lancer un sous-processus pour rien ;)

C'est le cas ;-)

>> Après, je suis d'accord sur l'écriture for monfile in $()..., sauf
>> qu'il faut protéger le $. Mais bizarrement, il me renvoie les
>> résultats découpés dès qu'il voit un blanc !
>
>Mmmm... non, la construction avec $() (dollar + parenthèses) servait à
>récupérer le résultat de la commande placée dedans. Pour protéger la
>variable, il faut ${} (dollar + accolades). D'ailleurs, c'est ce que
>tu fais ci-dessous :
> 
>> ssh mon_serveur_esx "for monfile in
>> \"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
>> d'installation De\"/*.vmdk ; do echo \"\${monfile}\" ; done"

Certes, mais là, c'est différent, non ?
Tu me proposes de remplacer $() par ${} ?
Du genre :

ssh mon_serveur_esx "for monfile in
\${ls /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a} ; do echo
$monfile ; done" ?
Mhum, même avec différentes syntaxes, j'obtiens juste :
ash: syntax error: Bad substitution

>[...] 
>
>> -
>> Test
>> d'installation
>> De/s47z038
>> -
>> Test
>> d'installation
>> De-flat.vmdk
>> [...]
>
>Il y a des espaces dans les noms de tes .vmdk ?

En effet :-(

>Tu saurais coller un ls -l du répertoire qui les contient, avec le
>path absolu ?

Euh oui, mais pourquoi ?

>Il y a un truc que je ne pige pas à mon avis...

C'est peut-être aussi moi qui explique mal ;-)

>@David : tu ne sais pas scripter le traitement des .vmdk, et appeler
>le script par ssh, pour voir ce que ça donne ?

Tu veux dire, faire un script sur le serveur et l'appeler ensuite
directement ? C'est ce que m'a suggérer Basile en mp ;-)
Je pourrais, mais vu que j'ai plein de serveurs à traiter, ça ne me
convient pas trop.

David.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: http://lists.debian.org/20120504171553.188e684d@debian-david



Re: Bash : quelques petites questions...

2012-05-04 Par sujet Sébastien NOBILI
Salut,

Le vendredi 04 mai 2012 à 16:40, David BERCOT a écrit :
> Alors, tout d'abord, le "ls" est effectivement superflu dans ma
> première écriture (c'est d'ailleurs pour ça qu'il est présent dans le
> résultat).
> Après, je suis d'accord sur l'écriture for monfile in $()..., sauf
> qu'il faut protéger le $. Mais bizarrement, il me renvoie les résultats
> découpés dès qu'il voit un blanc !

Tu peux jouer avec la variable IFS (le séparateur d'arguments), tu verras, c'est
marrant !

Les scripts en Shell, dès qu'il y a des espaces c'est la m !
Personnellement, j'utilise Perl (mais Python / Ruby / … feront l'affaire).

Seb

-- 
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: http://lists.debian.org/20120504151156.gb6...@sebian.nob900.homeip.net



Re: Bash : quelques petites questions...

2012-05-04 Par sujet JF Straeten

Re,

On Fri, May 04, 2012 at 04:46:23PM +0200, Bruno Richard wrote:

> et avec une syntaxe de ce style ?
> ssh serveur 'for i in `ls /tmp/`;do echo $i;done'
 
> les ' permettent de banaliser les caractères i.e. empêcher le shell
> courant d'interpreter les caractères spéciaux et notamment `et $ les
> ` permettent d'exécuter la commande ls /tmp et de renvoyer son
> résultat au for.

Oui, ça fait la même chose que la construction "$()", recommandée en
bash si je me souviens bien (?).

Mais ici, je crois qu'on a deux niveaux de contrariété potentiels avec
les guillemets : la boucle est elle-même la commande passée à ssh...

Ça fait deux chances pour les guillemets/apostrophes de se faire
bouffer quelque part ;)

@David : tu ne sais pas scripter le traitement des .vmdk, et appeler
le script par ssh, pour voir ce que ça donne ?

A+

-- 

JFS.

-- 
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: http://lists.debian.org/20120504150330.gb9...@jones.jfs.dt



Re: Bash : quelques petites questions...

2012-05-04 Par sujet David BERCOT
Le Fri, 4 May 2012 16:46:23 +0200,
Bruno Richard  a écrit :
>bonjour,
>
>et avec une syntaxe de ce style ?
>ssh serveur 'for i in `ls /tmp/`;do echo $i;done'
>
>les ' permettent de banaliser les caractères i.e. empêcher le shell
>courant d'interpreter
>les caractères spéciaux et notamment `et $
>les ` permettent d'exécuter la commande ls /tmp et de renvoyer son
>résultat au for.

J'avais déjà essayé cette syntaxe. Indépendamment des choses qui ne
marchent pas (avec des ", ça ne fonctionne plus et j'en ai besoin pour
mes noms de répertoires avec des blancs), le résultat est également
découpé dès qu'il y a un blanc dans la réponse...

David.

>Bruno
>
>Le 4 mai 2012 16:40, David BERCOT  a écrit :
>
>> Le Fri, 4 May 2012 14:20:13 +0200,
>> "JF Straeten"  a écrit :
>> >Re,
>> >On Fri, May 04, 2012 at 02:14:08PM +0200, David BERCOT wrote:
>> >[...]
>> >> ssh mon_serveur_esx "for monfile in ls
>> >> \"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
>> >> d'installation De\"/*.vmdk ; do echo \"\${monfile}\" ; done"
>> >
>> >> Premier souci : la commande ls apparaît dans le résultat ! Je ne
>> >> comprends pas bien pourquoi...
>> >
>> >Ne serait-ce pas plutôt :
>> >for monfile in $(ls MesVdmk.*)
>> >do
>> >...
>> >done
>> >pour distribuer ta boucle sur *ce que renvoie* d'ls ?
>>
>> Alors, tout d'abord, le "ls" est effectivement superflu dans ma
>> première écriture (c'est d'ailleurs pour ça qu'il est présent dans le
>> résultat).
>> Après, je suis d'accord sur l'écriture for monfile in $()..., sauf
>> qu'il faut protéger le $. Mais bizarrement, il me renvoie les
>> résultats découpés dès qu'il voit un blanc !
>>
>> Exemple :
>>
>> ssh mon_serveur_esx "for monfile in
>> \"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
>> d'installation De\"/*.vmdk ; do echo \"\${monfile}\" ; done"
>>
>> /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
>> d'installation De/s47z038 - Test d'installation
>> De-flat.vmdk
>> /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
>> d'installation De/s47z038 - Test d'installation De.vmdk
>>
>> ssh mon_serveur_esx "for monfile in \$(ls
>> \"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
>> d'installation De\"/*.vmdk) ; do echo \"\${monfile}\" ; done"
>>
>> /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038
>> -
>> Test
>> d'installation
>> De/s47z038
>> -
>> Test
>> d'installation
>> De-flat.vmdk
>> [...]
>>
>> >> Ensuite, je souhaiterais supprimer certaines lignes en ajoutant un
>> >> grep :
>> >> ssh esx-supp-02.cnin.insee.fr "for monfile in ls
>> >> \"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
>> >> d'installation De\"/*.vmdk | grep -v 0 ; do echo
>> >> \"\${monfile}\" ; done"
>> >> Là, il me répond : ash: syntax error: "|" unexpected
>> >> Je suppose que les deux commandes devraient être un peu isolées
>> >> mais je ne vois pas comment...
>> >
>> >En corrigeant ci-dessus, ça devrait améliorer le grep aussi, non ?
>> >
>> >C'est mieux ?
>>
>> Comme je n'ai pas encore tout corrigé ;-)
>>
>> David.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: http://lists.debian.org/20120504165918.2e648cda@debian-david



Re: Bash : quelques petites questions...

2012-05-04 Par sujet JF Straeten

Re,

On Fri, May 04, 2012 at 04:40:01PM +0200, David BERCOT wrote:

> >Ne serait-ce pas plutôt :
> >for monfile in $(ls MesVdmk.*)
> >do
> >...
> >done
> >pour distribuer ta boucle sur *ce que renvoie* d'ls ?
 
> Alors, tout d'abord, le "ls" est effectivement superflu dans ma
> première écriture (c'est d'ailleurs pour ça qu'il est présent dans
> le résultat).

'tention... je croyais que le "ls" était simplifié dans l'exemple,
mais que tu utilisais en réalité des switches pour lister les fichiers
d'une manière particulière. (Genre ls -lth pour avoir une liste
longue, human readable et temporellement inversée.)

Si c'est juste un 'ls', alors oui, autant utiliser les jokers du shell
et ne pas lancer un sous-processus pour rien ;)


> Après, je suis d'accord sur l'écriture for monfile in $()..., sauf
> qu'il faut protéger le $. Mais bizarrement, il me renvoie les résultats
> découpés dès qu'il voit un blanc !

Mmmm... non, la construction avec $() (dollar + parenthèses) servait à
récupérer le résultat de la commande placée dedans. Pour protéger la
variable, il faut ${} (dollar + accolades). D'ailleurs, c'est ce que
tu fais ci-dessous :
 

> ssh mon_serveur_esx "for monfile in
> \"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
> d'installation De\"/*.vmdk ; do echo \"\${monfile}\" ; done"

[...] 

> -
> Test
> d'installation
> De/s47z038
> -
> Test
> d'installation
> De-flat.vmdk
> [...]

Il y a des espaces dans les noms de tes .vmdk ?

Tu saurais coller un ls -l du répertoire qui les contient, avec le
path absolu ?

Il y a un truc que je ne pige pas à mon avis...

A+


-- 

JFS.

-- 
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: http://lists.debian.org/20120504145812.ga9...@jones.jfs.dt



Re: Bash : quelques petites questions...

2012-05-04 Par sujet Bruno Richard
bonjour,

et avec une syntaxe de ce style ?
ssh serveur 'for i in `ls /tmp/`;do echo $i;done'

les ' permettent de banaliser les caractères i.e. empêcher le shell courant
d'interpreter
les caractères spéciaux et notamment `et $
les ` permettent d'exécuter la commande ls /tmp et de renvoyer son résultat
au for.

Bruno


Le 4 mai 2012 16:40, David BERCOT  a écrit :

> Le Fri, 4 May 2012 14:20:13 +0200,
> "JF Straeten"  a écrit :
> >Re,
> >On Fri, May 04, 2012 at 02:14:08PM +0200, David BERCOT wrote:
> >[...]
> >> ssh mon_serveur_esx "for monfile in ls
> >> \"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
> >> d'installation De\"/*.vmdk ; do echo \"\${monfile}\" ; done"
> >
> >> Premier souci : la commande ls apparaît dans le résultat ! Je ne
> >> comprends pas bien pourquoi...
> >
> >Ne serait-ce pas plutôt :
> >for monfile in $(ls MesVdmk.*)
> >do
> >...
> >done
> >pour distribuer ta boucle sur *ce que renvoie* d'ls ?
>
> Alors, tout d'abord, le "ls" est effectivement superflu dans ma
> première écriture (c'est d'ailleurs pour ça qu'il est présent dans le
> résultat).
> Après, je suis d'accord sur l'écriture for monfile in $()..., sauf
> qu'il faut protéger le $. Mais bizarrement, il me renvoie les résultats
> découpés dès qu'il voit un blanc !
>
> Exemple :
>
> ssh mon_serveur_esx "for monfile in
> \"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
> d'installation De\"/*.vmdk ; do echo \"\${monfile}\" ; done"
>
> /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
> d'installation De/s47z038 - Test d'installation
> De-flat.vmdk
> /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
> d'installation De/s47z038 - Test d'installation De.vmdk
>
> ssh mon_serveur_esx "for monfile in \$(ls
> \"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
> d'installation De\"/*.vmdk) ; do echo \"\${monfile}\" ; done"
>
> /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038
> -
> Test
> d'installation
> De/s47z038
> -
> Test
> d'installation
> De-flat.vmdk
> [...]
>
> >> Ensuite, je souhaiterais supprimer certaines lignes en ajoutant un
> >> grep :
> >> ssh esx-supp-02.cnin.insee.fr "for monfile in ls
> >> \"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
> >> d'installation De\"/*.vmdk | grep -v 0 ; do echo
> >> \"\${monfile}\" ; done"
> >> Là, il me répond : ash: syntax error: "|" unexpected
> >> Je suppose que les deux commandes devraient être un peu isolées mais
> >> je ne vois pas comment...
> >
> >En corrigeant ci-dessus, ça devrait améliorer le grep aussi, non ?
> >
> >C'est mieux ?
>
> Comme je n'ai pas encore tout corrigé ;-)
>
> David.
>
> --
> Lisez la FAQ de la liste avant de poser une question :
> http://wiki.debian.org/fr/FrenchLists
>
> Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
> vers debian-user-french-requ...@lists.debian.org
> En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
> Archive: http://lists.debian.org/20120504164001.651ffab5@debian-david
>
>


Re: Bash : quelques petites questions...

2012-05-04 Par sujet David BERCOT
Le Fri, 4 May 2012 14:20:13 +0200,
"JF Straeten"  a écrit :
>Re,
>On Fri, May 04, 2012 at 02:14:08PM +0200, David BERCOT wrote:
>[...]
>> ssh mon_serveur_esx "for monfile in ls
>> \"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
>> d'installation De\"/*.vmdk ; do echo \"\${monfile}\" ; done"
> 
>> Premier souci : la commande ls apparaît dans le résultat ! Je ne
>> comprends pas bien pourquoi... 
>
>Ne serait-ce pas plutôt :
>for monfile in $(ls MesVdmk.*)
>do
>...
>done
>pour distribuer ta boucle sur *ce que renvoie* d'ls ?

Alors, tout d'abord, le "ls" est effectivement superflu dans ma
première écriture (c'est d'ailleurs pour ça qu'il est présent dans le
résultat).
Après, je suis d'accord sur l'écriture for monfile in $()..., sauf
qu'il faut protéger le $. Mais bizarrement, il me renvoie les résultats
découpés dès qu'il voit un blanc !

Exemple :

ssh mon_serveur_esx "for monfile in
\"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
d'installation De\"/*.vmdk ; do echo \"\${monfile}\" ; done"

/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
d'installation De/s47z038 - Test d'installation
De-flat.vmdk
/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
d'installation De/s47z038 - Test d'installation De.vmdk

ssh mon_serveur_esx "for monfile in \$(ls
\"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
d'installation De\"/*.vmdk) ; do echo \"\${monfile}\" ; done"

/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038
-
Test
d'installation
De/s47z038
-
Test
d'installation
De-flat.vmdk
[...]

>> Ensuite, je souhaiterais supprimer certaines lignes en ajoutant un
>> grep :
>> ssh esx-supp-02.cnin.insee.fr "for monfile in ls
>> \"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
>> d'installation De\"/*.vmdk | grep -v 0 ; do echo
>> \"\${monfile}\" ; done"
>> Là, il me répond : ash: syntax error: "|" unexpected
>> Je suppose que les deux commandes devraient être un peu isolées mais
>> je ne vois pas comment...
>
>En corrigeant ci-dessus, ça devrait améliorer le grep aussi, non ?
>
>C'est mieux ?

Comme je n'ai pas encore tout corrigé ;-)

David.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: http://lists.debian.org/20120504164001.651ffab5@debian-david



Re: Bash : quelques petites questions...

2012-05-04 Par sujet JF Straeten

Re,

On Fri, May 04, 2012 at 02:14:08PM +0200, David BERCOT wrote:

[...]
> ssh mon_serveur_esx "for monfile in ls
> \"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
> d'installation De\"/*.vmdk ; do echo \"\${monfile}\" ; done"
 
> Premier souci : la commande ls apparaît dans le résultat ! Je ne
> comprends pas bien pourquoi... 

Ne serait-ce pas plutôt :

for monfile in $(ls MesVdmk.*)
do
...
done

pour distribuer ta boucle sur *ce que renvoie* d'ls ?


 
> Ensuite, je souhaiterais supprimer certaines lignes en ajoutant un
> grep :
> ssh esx-supp-02.cnin.insee.fr "for monfile in ls
> \"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
> d'installation De\"/*.vmdk | grep -v 0 ; do echo \"\${monfile}\" ;
> done"
> Là, il me répond : ash: syntax error: "|" unexpected
> Je suppose que les deux commandes devraient être un peu isolées mais je
> ne vois pas comment...

En corrigeant ci-dessus, ça devrait améliorer le grep aussi, non ?

C'est mieux ?

Hih,

-- 

JFS.

-- 
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: http://lists.debian.org/20120504122013.ga6...@jones.jfs.dt



Bash : quelques petites questions...

2012-05-04 Par sujet David BERCOT
Bonjour,

Je viens de reprendre un script qui travaille sur des serveurs ESX et,
après y avoir passé deux jours, je pense qu'il est temps que je
demande un peu d'aide ;-)

Bref, je souhaite faire un traitement sur l'ensemble (ou presque) des
fichiers vmdk de mes VM. Pour cela, je partais sur quelque chose du
genre :
ssh mon_serveur_esx "for monfile in ls
\"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
d'installation De\"/*.vmdk ; do echo \"\${monfile}\" ; done"

Premier souci : la commande ls apparaît dans le résultat ! Je ne
comprends pas bien pourquoi... Je ne devrais avoir, de mon point de
vue, que les lignes correspondantes...

Ensuite, je souhaiterais supprimer certaines lignes en ajoutant un
grep :
ssh esx-supp-02.cnin.insee.fr "for monfile in ls
\"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
d'installation De\"/*.vmdk | grep -v 0 ; do echo \"\${monfile}\" ;
done"
Là, il me répond : ash: syntax error: "|" unexpected
Je suppose que les deux commandes devraient être un peu isolées mais je
ne vois pas comment...

J'ai d'autres problèmes mais je pense que, pour commencer, si
j'obtenais quelques indices sur ces premiers problèmes, ce serait déjà
un bon début.

Merci d'avance pour toutes les pistes que vous pourrez m'indiquer.

David.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: http://lists.debian.org/20120504141408.2b8795fa@debian-david