Extraire une partie de plusieurs fichiers de configuration et réaliser une synth

Résolu
bzhmickael35 Messages postés 4 Statut Membre -  
bzhmickael35 Messages postés 4 Statut Membre -
Bonjour à tous,

J'aimerais extraire une partie des mes fichiers de configuration et pouvoir en faire une synthèse.

Voici un extrait de mon fichier de conf:

interface GigabitEthernet0/1
shutdown
!
interface GigabitEthernet0/2
switchport trunk allowed vlan 3001-3009,4000,4001,4003,4004
switchport mode trunk
!
interface GigabitEthernet0/3
switchport trunk allowed vlan 400
switchport mode trunk
!
interface GigabitEthernet0/4
switchport trunk allowed vlan 771,791,802,827,838,844
switchport mode trunk
!
interface GigabitEthernet0/5
shutdown
!
interface GigabitEthernet0/6
switchport trunk native vlan 4005
switchport mode trunk
!
interface GigabitEthernet0/7
shutdown
!
...


et j'aimerais obtenir:

1 allowed : 
1 native :
2 allowed :3001,3002,3003,3004,3005,3006,3007,3008,3009,4000,4001,4003,4004
2 native :
3 allowed :400
3 native :
4 allowed : 771,791,802,827,838,844
4 native :
5 allowed :
5 native :
6 allowed :
6 native : 4005
7 allowed :
7 native :

....


Je pensais faire :
cat config.txt | grep ***** > resultat.txt
mais n'arrive pas à faire grand chose, pouvez-vous m'aider ou me donner des pistes?

merci d'avance

5 réponses

  1. mamiemando Messages postés 33174 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Bonjour,

    Pour ce genre de script tu ne vais pas pouvoir t'en sortir en une commande, puisque tu dois retenir le numéro d'interface qui apparaît en début de ligne dans ton rapport. Tu ne pourras pas le faire en une commande shell.

    Il faut donc écrire un script, dans le langage de ton choix (shell, python, awk...), le plus simple étant awk à mon avis dans le cas présent.
    https://nyal.developpez.com/tutoriel/gawk/

    Bonne chance
    0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    d'où vient le premier allowed ? le premier native ?
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 502
       
      Salut,

      Il a aussi oublié de préciser que
      3001-3009,4000,4001,4003,4004
      doit devenir
      3001,3002,3003,3004,3005,3006,3007,3008,3009,4000,4001,4003,4004
      ;-\
      0
  3. bzhmickael35 Messages postés 4 Statut Membre
     
    Bonjour,

    Je vais regarder du coté des 'AWK',

    ''Il a aussi oublié de préciser que

    3001-3009,4000,4001,4003,4004

    doit devenir

    3001,3002,3003,3004,3005,3006,3007,3008,3009,4000,4001,4003,4004

    ;-\ '

    oui j'ai oublier de préciser, même si pour moi cela reste moins important que ma demande initiale.
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 502
       
      Tu n'as pas répondu à dubcek ;-\
      0
  4. Thomas10_10
     
    A moins de faire un script ou une commande complexe pour avoir exactement ce que tu veux, cette commande simple donne une bonne synthèse :

    grep -e inter -e allow -e native fichier_de_conf


    interface GigabitEthernet0/1
    interface GigabitEthernet0/2
    switchport trunk allowed vlan 3001-3009,4000,4001,4003,4004
    interface GigabitEthernet0/3
    switchport trunk allowed vlan 400
    interface GigabitEthernet0/4
    switchport trunk allowed vlan 771,791,802,827,838,844
    interface GigabitEthernet0/5
    interface GigabitEthernet0/6
    switchport trunk native vlan 4005
    interface GigabitEthernet0/7
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. bzhmickael35 Messages postés 4 Statut Membre
     
    Voila mon avancement, avec cette commande :

    grep -e interface\ gig -e allow -e native mon_fichier_de_conf.txt | awk -F " " '{ if ($1=="interface")  print  $2; else if ($3=="native") print "native:", $5; else if ($3=="allowed") print "allowed:", $6 } '


    J’obtiens:

    GigabitEthernet0/1
    GigabitEthernet0/2
    allowed : 3001-3009,4000,4001,4003,4004
    GigabitEthernet0/3
    allowed : 400
    GigabitEthernet0/4
    allowed : 771,791,802,827,838,844
    GigabitEthernet0/5
    GigabitEthernet0/6
    native : 4005
    GigabitEthernet0/7


    Merci à tous ceux qui m'ont aidé.
    0