Bonjour à tous,
je réaliser un script pour une machine vmware.
J’ai cette commande:
vmrun -T server -h https://127.0.0.1:8333/sdk -u **** -p ****** list | grep standard
Cette commande me retourne ceci:
[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:
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:
[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
Ça suffit pas ça ? (j’ai modifié la regexp uniquement pour la rendre plus restrictive)
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.
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
niquel
j’arrive à avoir ceci:
[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:
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
Bonjour,
Pour obtenir que la partie entre le dernier / et vmx tu peux faire ceci, la seconde partie remplace les espaces par "\ " :
Merci,
comment je doit faire pour le mettre en variable
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?
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
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)"
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
echo $vm | sed 's#^.*/\(.*\)\.vmx#\1#'g | sed 's# #\\ #'g
je récupérait le ce que je voulait sans le / à la fin.
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
Par contre, il faut que la syntaxe soit toujours la même a savoir :
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