# Script vmware, utiliser resultat d'une commande

**URL:** <https://www.debian-fr.org/t/script-vmware-utiliser-resultat-dune-commande/23170>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 8:59 UTC](https://www.debian-fr.org/t/script-vmware-utiliser-resultat-dune-commande/23170 "2016-02-20T20:59:39Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![guigui69](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/50afbb/32.png) [@guigui69](https://www.debian-fr.org/u/guigui69)\
**Post date:** [Février 20, 2016, 8:59 UTC](https://www.debian-fr.org/t/script-vmware-utiliser-resultat-dune-commande/23170/1 "2016-02-20T20:59:39Z")

</div>

Bonjour à tous,

je réaliser un script pour une machine vmware.

J’ai cette commande:

```auto
vmrun -T server -h https://127.0.0.1:8333/sdk -u ****-p****** list | grep standard

```

Cette commande me retourne ceci:

```auto
[standard] Windows Server 2003 Standard Edition/Windows Server 2003 Standard Edition.vmx

```

(Je n’ai qu’une seul machine virtuelle actuellement.)

le but serait qu’avec la commande je liste l’ensemble des vm, qu’il réalise pour chaque ligne une commande. mais je bloque.

j’avais pensé à ceci:

```auto
for vm in `vmrun -T server -h https://127.0.0.1:8333/sdk -u *******-p****** list | grep standard`
do
        echo $vm
done
```

Mais il me retourne ceci:

```auto
 [standard]
Windows
Server
2003
Standard
Edition/Windows
Server
2003
Standard
Edition.vmx
```

je voudrait qu’il me retourne ceci sur une ligne.

Est-ce possible ? ma démarche n’est pas la bonne?

Merci

guigui69

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 8:59 UTC](https://www.debian-fr.org/t/script-vmware-utiliser-resultat-dune-commande/23170/2 "2016-02-20T20:59:39Z")

</div>

Ça suffit pas ça ? (j’ai modifié la regexp uniquement pour la rendre plus restrictive)

```auto

```

Sinon tu fais ça pour régler le problème avec ta boucle :

`var=$IFS
IFS="\n"
for vm in `vmrun -T server -h https://127.0.0.1:8333/sdk -u *******-p****** list | grep '^\[standard\]'`
do
        echo $vm
done
IFS=$var`  
si je ne me trompe pas.

---

<div class="post-metadata">

**Author:** ![micky979](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/d9b06d/32.png) [@micky979](https://www.debian-fr.org/u/micky979)\
**Post date:** [Février 20, 2016, 8:59 UTC](https://www.debian-fr.org/t/script-vmware-utiliser-resultat-dune-commande/23170/3 "2016-02-20T20:59:40Z")

</div>

Bonjour,

Pour eviter de modifier la valeur de IFS tu peux faire ceci :

`
vmrun -T server -h https://127.0.0.1:8333/sdk -u *******-p****** list | grep standard | while read vm
do
     echo $vm
done`

---

<div class="post-metadata">

**Author:** ![guigui69](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/50afbb/32.png) [@guigui69](https://www.debian-fr.org/u/guigui69)\
**Post date:** [Février 20, 2016, 8:59 UTC](https://www.debian-fr.org/t/script-vmware-utiliser-resultat-dune-commande/23170/4 "2016-02-20T20:59:40Z")

</div>

niquel

j’arrive à avoir ceci:

```auto
[standard] Windows Server 2003 Standard Edition/Windows Server 2003 Standard Edition.vmx
```

Encore une question est-il possible avec un grep à l’interieur du

`
vmrun -T server -h https://127.0.0.1:8333/sdk -u *******-p****** list | grep standard | while read vm
do
     echo $vm
done`

Voici le script que j’essaie de réaliser:

```auto

vmrun -T server -h https://127.0.0.1:8333/sdk -u ****-p***** list | grep standard | while read vm
do
        echo vmrun -T server -h $HTTP -u $USER -p "$MDP" snapshot "$vm" Snap1

        #rm -R REP_DES[$7DAY]*.*
        #echo $REP__SOURCE
        #echo cp -R $REP_SOURCE"Windows\ Server\ 2003\ Standard\ Edition/" $REP_DES[$DAY]Windows\ Server\ 2003\ Standard\ Edition/

       #vmrun -T server -h $HTTP -u $USER -p "$MDP" deleteSnapshot "$vm" Snap1

done

```

1- il snapshot l’image vmware, puis copie l’image sur un autre emplacement, et supprime le snap à la fin.

est-il possible est un grep de retraiter le $vm pour avoir ceci:

[quote]  
Windows\ Server\ 2003\ Standard\ Edition/[/quote]

Merci d’avance pour votre aide.

guigui69

---

<div class="post-metadata">

**Author:** ![micky979](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/d9b06d/32.png) [@micky979](https://www.debian-fr.org/u/micky979)\
**Post date:** [Février 20, 2016, 8:59 UTC](https://www.debian-fr.org/t/script-vmware-utiliser-resultat-dune-commande/23170/5 "2016-02-20T20:59:41Z")

</div>

Bonjour,

Pour obtenir que la partie entre le dernier / et vmx tu peux faire ceci, la seconde partie remplace les espaces par "\ " :

```auto

```

---

<div class="post-metadata">

**Author:** ![guigui69](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/50afbb/32.png) [@guigui69](https://www.debian-fr.org/u/guigui69)\
**Post date:** [Février 20, 2016, 8:59 UTC](https://www.debian-fr.org/t/script-vmware-utiliser-resultat-dune-commande/23170/6 "2016-02-20T20:59:42Z")

</div>

Merci,

comment je doit faire pour le mettre en variable

```auto

```

je voudrait le mettre en

$DOSSIER = $vm | sed 's#^._/(._).vmx#\1#'g | sed 's# #\ #'g  
$DOSSIER = echo $vm | sed 's#^._/(._).vmx#\1#'g | sed 's# #\ #'g  
mais ça ne fonctionne pas.

Quel paramètre est manquant pour l’insérer dans ma variable? Doit-je la déclarer avant dans mon script?

```auto
vmrun -T server -h $HTTP -u "$USER" -p "$MDP" list | grep standard | while read vm
do
        echo vmrun -T server -h $HTTP -u $USER -p "$MDP" snapshot "$vm" Snap1
        echo $vm | sed 's#^.*/\(.*\)\.vmx#\1#'g | sed 's# #\\ #'g > $DOSSIER
        #DOSSIER= $vm | sed 's#^.*/\(.*\)\.vmx#\1#'g | sed 's# #\\ #'g
        echo $DOSSIER
        #echo rm -R REP_DES[$MDAY]*.*
        #echo $REP__SOURCE
        #echo cp -R $REP_SOURCE $DOSSIER $REP_DES[$DAY] $DOSSIER

        #echo vmrun -T server -h $HTTP -u $USER -p "$MDP" deleteSnapshot "$vm" Snap1

done

```

guigui69

---

<div class="post-metadata">

**Author:** ![micky979](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/d9b06d/32.png) [@micky979](https://www.debian-fr.org/u/micky979)\
**Post date:** [Février 20, 2016, 8:59 UTC](https://www.debian-fr.org/t/script-vmware-utiliser-resultat-dune-commande/23170/7 "2016-02-20T20:59:43Z")

</div>

Bonjour,

Ta demande n’est pas clair.

Qu’elle partie souhaites tu récuperer dans ce contenu :

`[standard] Windows Server 2003 Standard Edition/Windows Server 2003 Standard Edition.vmx` La partie avant le / ou après ?

Si c’est un dossier pourquoi rajouter des \ avant les espaces, il suffit de mettre le chemin complet entre guillemet ?

Sinon pour affecter `echo $vm | sed 's#^.*/\(.*\)\.vmx#\1#'g | sed 's# #\\ #'g` dans une variable, il faut faire ceci : `DOSSIER="$(echo $vm | sed 's#^.*/\(.*\)\.vmx#\1#'g | sed 's# #\\ #'g)"`

---

<div class="post-metadata">

**Author:** ![guigui69](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/50afbb/32.png) [@guigui69](https://www.debian-fr.org/u/guigui69)\
**Post date:** [Février 20, 2016, 8:59 UTC](https://www.debian-fr.org/t/script-vmware-utiliser-resultat-dune-commande/23170/8 "2016-02-20T20:59:44Z")

</div>

Mon but est de récupérer `Windows Server 2003 Standard Edition/ ` en rajoutant des \ devant chaque nom.

Mais bon avec la précédente

```auto
echo $vm | sed 's#^.*/\(.*\)\.vmx#\1#'g | sed 's# #\\ #'g
```

je récupérait le ce que je voulait sans le / à la fin.

---

<div class="post-metadata">

**Author:** ![micky979](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/d9b06d/32.png) [@micky979](https://www.debian-fr.org/u/micky979)\
**Post date:** [Février 20, 2016, 8:59 UTC](https://www.debian-fr.org/t/script-vmware-utiliser-resultat-dune-commande/23170/9 "2016-02-20T20:59:44Z")

</div>

Bonjour,

La syntaxe que je t’ai donné n’est pas correcte car elle recupere la partie après le /.

La ca tombait bien car le nom du repertoire et le nom du fichier sont identique mais se ne sera pas forcement le cas dans ton environnement, voici la ligne corrigé avec affectation dans la variable DOSSIER

```auto

```

Par contre, il faut que la syntaxe soit toujours la même a savoir :

```auto

```

---

<div class="post-metadata">

**Author:** ![guigui69](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/50afbb/32.png) [@guigui69](https://www.debian-fr.org/u/guigui69)\
**Post date:** [Février 20, 2016, 8:59 UTC](https://www.debian-fr.org/t/script-vmware-utiliser-resultat-dune-commande/23170/10 "2016-02-20T20:59:45Z")

</div>

Ok merci,

la syntaxe sera toujours la même (normalement) car cette liste est générer par vwmare.

je regarde ca et je test.

guigui69
