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

Résolu/Fermé
bzhmickael35 Messages postés 4 Date d'inscription samedi 27 octobre 2018 Statut Membre Dernière intervention 10 décembre 2018 - Modifié le 14 déc. 2018 à 23:46
bzhmickael35 Messages postés 4 Date d'inscription samedi 27 octobre 2018 Statut Membre Dernière intervention 10 décembre 2018 - 10 déc. 2018 à 21:18
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
A voir également:

5 réponses

mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748
29 oct. 2018 à 11:53
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
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
30 oct. 2018 à 10:49
hello
d'où vient le premier allowed ? le premier native ?
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
30 oct. 2018 à 14:54
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
bzhmickael35 Messages postés 4 Date d'inscription samedi 27 octobre 2018 Statut Membre Dernière intervention 10 décembre 2018
30 oct. 2018 à 14:59
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
30 oct. 2018 à 15:02
Tu n'as pas répondu à dubcek ;-\
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bzhmickael35 Messages postés 4 Date d'inscription samedi 27 octobre 2018 Statut Membre Dernière intervention 10 décembre 2018
Modifié le 14 déc. 2018 à 23:45
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