Salut,

Cela fait plusieurs jours que je bloque sur mon script. J'aimerai parser un fichier yml afin d'un ressortir une info selon l'argument passé.

dic.yml
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
 
local
  key: loc
  tri:  lcl
  connec:
    - vpn: oui
    - ssh: oui
  vms:
    - group1: vm1, vm2, vm3
    - group2: vm4, vm5, vm6
 
hyperviseur:
  key: hyp
  tri: hyp
  connec: ipmi
  vms: hy1, hy2
En gros mon fichier yml ressemble à ça.

Je voudrais que mon script puisse selon l'argument :
- afficher certaines informations (vms, connect par exemple) quand je lui passe en argument 'local' ou 'hyperviseur'

- quand je lui passe un nom contenu dans 'vms' (qui est unique) donc par exemple 'vm2' qu'il m'affiche 'local' et le contenu de 'connec'.

En plus explicite :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
./kit.py --info local
VMs:
    - Groupe1: vm1, vm2, vm3
    - Groupe2: vm4, vm5, vm6
Connexion: 
    - VPN: oui
    - SSH: oui
 
./kit.py --vm hyp2
Appartient à: hyperviseur
Connexion: ipmi
Je ne m'en sors à réaliser ça. Déjà est-ce techniquement possible ?

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
 
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
 
import yaml
import os.path
import argparse
 
parser = argparse.ArgumentParser()
parser.add_argument("-v", "--vm", help="Afficher à qui appartient la vm")
parser.add_argument("-i", "--info", help="Afficher les informations d'un groupe")
 
args = parser.parse_args()
 
with open('dic.yml', 'r') as f:
  obj = yaml.load(f)
J'ai essayé plusieurs choses pour récupérer les informations souhaitées selon l'argument passé en parsant le yml.

Pouvez-vous m'aider ?

Je vous remercie d'avoir lu.

Océane