IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

[Shell - bash] Découpe d'une chaine de caractères entre 2 caractères spécifiques


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2015
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2015
    Messages : 79
    Par défaut [Shell - bash] Découpe d'une chaine de caractères entre 2 caractères spécifiques
    Salut salut a tout et JOYEUX NOEIL (un poil en avance )

    Bon je vais expliqué tout dans les régles de l'art

    Je veux créé un scrip en SHELL (.sh) qui va me permettre de sauvegardé des machines virtuelle. J'arrive a faire c'est sauvegarde en ligne de commande, avec les commande suivante :
    1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    xe vm-list is-control-domain=false
    uuid ( RO)           : f20e8e5c-21f4-6216-fdb2-4c63071b3c4a
    name-label ( RW): Debian GNU/Linux Admin
    power-state ( RO): running
     
    [...]
     
    uuid ( RO)           : 281ba971-3955-ff69-7881-eaaca616ed16
    name-label ( RW): Serveur05
    power-state ( RO): running
    2)xe vm-snapshot vm=<vm_uuid> new-name-label=<vm_snapshot_name>

    3)xe template-param-set is-a-template=false ha-always-run=false uuid=<snap_uuid>

    4)xe vm-export vm=<snap_uuid> filename=<name-label.xva>

    5)xe vm-uninstall uuid=<snap_uuid> force=true

    MAIS je bloque a la première étape ^^

    Donc je me tourne vers vous car j'arrive pas a faire que je souhaite, je m'explique avec du code c'est plus claire

    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #!/bin/bash
     
    vm_list_string=`xe vm-list is-control-domain=false`
    IFS=" "
     
    echo $vm_list_string
    exit 0
    Et voila ce que cela me retourne :

    Nom : Capture1.PNG
Affichages : 171
Taille : 34,1 Ko

    Et la il faudrait que j'arrive a récupéré le uuid, du moin ce qu'il y a après ainsi que le name-label

    J'ai vu qu'il y avait la fonction "export" mais j'arrive vraiment pas a l'utilisé

    Si quelqu'un a envie de me faire une petit cadeau de noël c'est le moment

    MERCI BEAUCOUP D'AVANCE

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2015
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2015
    Messages : 79
    Par défaut
    Bonjour bonjour

    Bon j'ai trouvé un début de solution mais qui me convient pas trop ^^

    Voila le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #!/bin/bash
     
    vm_list_string=`xe vm-list is-control-domain=false`
     
    echo "$vm_list_string"|cut -d:  -f 2
     
    exit 0
    ce qui me donne :

    Nom : Capture2.PNG
Affichages : 177
Taille : 16,1 Ko

    Et moi j'aurai besoin d'avoir les numéros de la ligne 1 dans une variable et la ligne 2 dans une variable et ainsi de suite pour chaque ligne ou voir même un tableau a deux dimenssions.

    MERCI d'avance pour votre aide

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Bonjour,

    on préférerais avoir la sortie de la commande en copié/collé, plutôt qu'une copie d'écran, pour pouvoir travailler dessus sans avoir à recopier à la main !
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2015
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2015
    Messages : 79
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Bonjour,

    on préférerais avoir la sortie de la commande en copié/collé, plutôt qu'une copie d'écran, pour pouvoir travailler dessus sans avoir à recopier à la main !
    Salut a toi N_Bah

    Voila la sorti de la commande que j'obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    ed7e3d93-d757-2e3f-3952-03cba769c2d5
     Windows_XP_2
     halted
     
     
     19912bf0-8e5c-4d94-2006-18c2f5760029
     Windows_XP_1
     halted
     
     
     c1eabd76-5d1b-3ee4-d262-06441cfccb9e
     Windows Server 2003 (64-bit)
     halted
     
     
     30b6941b-fba8-ffde-3163-fd474f1708a2
     Ubuntu_14.04
     halted
     
     
     b43c64e2-6f8a-c6c1-edae-9fb3c005620c
     Windows Server 2008 R2 (64-bit)
     halted
    Merci de ton aide

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    ça, ce n'est pas la sortie brute, c'est ce que tu obtiens après découpage ?
    les espaces se sont ajoutées toutes seules lors de la copie, ou font-elles parties de la sortie de la commande ?

    on va tâcher de commencer à partir d'une sortie propre, telle que l'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xe vm-list is-control-domain=false
    et qu'on parcourra avec une boucle while, dans laquelle on exécutera les commandes de sauvegardes... pour chaque mV.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2015
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2015
    Messages : 79
    Par défaut
    Oui pardon j'avais pas bien compris

    Alors avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    !/bin/bash
     
    vm_list=`xe vm-list is-control-domain=false`
     
    echo $vm_list
     
    exit 0
    J'obtiens :

    uuid ( RO) : f1ee466f-66bd-6655-2fdf-1ad230e2d246 name-label ( RW): Windows_8 power-state ( RO): halted uuid ( RO) : ed7e3d93-d757-2e3f-3952-03cba769c2d5 name-label ( RW): Windows_XP_2 power-state ( RO): halted uuid ( RO) : 19912bf0-8e5c-4d94-2006-18c2f5760029 name-label ( RW): Windows_XP_1 power-state ( RO): halted uuid ( RO) : c1eabd76-5d1b-3ee4-d262-06441cfccb9e name-label ( RW): Windows Server 2003 (64-bit) power-state ( RO): halted uuid ( RO) : 30b6941b-fba8-ffde-3163-fd474f1708a2 name-label ( RW): Ubuntu_14.04 power-state ( RO): halted uuid ( RO) : b43c64e2-6f8a-c6c1-edae-9fb3c005620c name-label ( RW): Windows Server 2008 R2 (64-bit) power-state ( RO): halted
    Et un peu plus présentable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    !/bin/bash
     
    vm_list=`xe vm-list is-control-domain=false`
    IFS=" "
     
    echo $vm_list
     
    exit 0
    j'obtiens :

    uuid ( RO) : ed7e3d93-d757-2e3f-3952-03cba769c2d5
    name-label ( RW): Windows_XP_2
    power-state ( RO): halted


    uuid ( RO) : 19912bf0-8e5c-4d94-2006-18c2f5760029
    name-label ( RW): Windows_XP_1
    power-state ( RO): halted


    uuid ( RO) : c1eabd76-5d1b-3ee4-d262-06441cfccb9e
    name-label ( RW): Windows Server 2003 (64-bit)
    power-state ( RO): halted


    uuid ( RO) : 30b6941b-fba8-ffde-3163-fd474f1708a2
    name-label ( RW): Ubuntu_14.04
    power-state ( RO): halted


    uuid ( RO) : b43c64e2-6f8a-c6c1-edae-9fb3c005620c
    name-label ( RW): Windows Server 2008 R2 (64-bit)
    power-state ( RO): halted
    MERCI de ton aide car franchement j'ai vraiment du mal à trouver la solution et j'ai tenté plusieurs pistes

    Et je pense que avec expr ça peut fonctionner

  7. #7
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour

    Comme il s'agit d'une transformation de fichier texte vers fichier texte, on peut utiliser la flopée d'outils grep, sed, awk, etc.

    Mettre le résultat de la commande dans une variable ne semble pas être le plus efficace.

    [edit]posts croisés.

    Es-tu sous linux ?
    Cygwin sous windows ?

    Je doute sur la fin de ligne de ce que tu as copier-collé. Windows n'a pas compris les '\n' car il attend '\r\n'. N'est-ce pas ?[/edit]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [11gR2] Fonction qui découpe une chaine en section de 50 caractères
    Par shaun_the_sheep dans le forum PL/SQL
    Réponses: 1
    Dernier message: 18/11/2015, 14h57
  2. Réponses: 4
    Dernier message: 18/08/2010, 11h45
  3. Bash : Test d'une chaine
    Par kimlee dans le forum Administration système
    Réponses: 2
    Dernier message: 26/01/2007, 13h31
  4. Réponses: 2
    Dernier message: 21/07/2006, 12h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo