Forum Programmation.shell fusion de tableau de requette snmp

Posté par  .
Étiquettes : aucune
0
6
juil.
2005
Bonjour tout le monde

Je cherche a faire un petit script qui me donnerais les voisins de mes equipements
cisco, en interogeant la MIB snmp relatif au voisin CDP.

voici les commandes tapé

snmpwalk `equihost 100` cisco.ciscoMgmt.ciscoCdpMIB. ciscoCdpMIBObjects.cdpCache. cdpCacheTable.cdpCacheEntry. cdpCacheDeviceId | awk -F "." '{print $9 " "$10}' | awk '{print $1 " " $2 " " $7}'

Recupère les voisins avec le numero de l'interface en snmp

9 1 shoot-land-2924-472
14 1 shoot-land-3640-943
134 1 shoot-land-rsm-220
149 1 shoot-land-2924-104
150 1 shoot-land-2924-105
151 1 shoot-land-2924-106
152 1 shoot-land-2924-107
153 1 shoot-land-2924-108
154 1 shoot-land-2924-109
158 1 shoot-land-3640-943
160 1 shoot-land-3524-1021
161 1 shoot-land-2924-493
162 1 shoot-land-2924-494
163 1 shoot-land-2924-495
164 2 shoot-land-3548-1929
165 1 shoot-land-2950-2443
167 1 shoot-land-2924-2073
168 1 shoot-land-2950-2428
170 1 shoot-land-2950-2441
171 1 shoot-land-2950-2452
246 2 shoot-land-3550-3457
248 2 shoot-aube-4006-1932
248 3 shoot-land-2950-3270
248 4 shoot-land-2651-3606
248 5 shoot-land-2621-1232
249 1 shoot-land-3548-1473


snmpwalk `equihost 100` cisco.ciscoMgmt.ciscoCdpMIB. ciscoCdpMIBObjects. cdpCache.cdpCacheTable. cdpCacheEntry.cdpCacheDevicePort | awk -F "." '{print $9 " "$10}' | awk '{print $1 " " $2 " " $7}'

pareil, mais pour l'interface "distante"

9 1 Ethernet0
14 1 Ethernet0/0
134 1 Vlan1
149 1 FastEthernet0/1
150 1 FastEthernet0/1
151 1 FastEthernet0/1
152 1 FastEthernet0/1
153 1 FastEthernet0/1
154 1 FastEthernet0/1
158 1 Ethernet2/3
160 1 FastEthernet0/23
161 1 FastEthernet0/1
162 1 FastEthernet0/1
163 1 FastEthernet0/1
164 2 FastEthernet0/1
165 1 FastEthernet0/1
167 1 FastEthernet0/1
168 1 FastEthernet0/1
170 1 FastEthernet0/1
171 1 FastEthernet0/1
246 2 FastEthernet0/1
248 2 2/5
248 3 FastEthernet0/24
248 4 FastEthernet0/1
248 5 FastEthernet0/1
249 1 GigabitEthernet0/1


snmpwalk `equihost 100` ifName | awk -F "." '{print $6" "$7}' | awk '{print $1" "$6}'

Et cette commande me recupère la liste avec correspondance entre numero snmp et numero plus "humain"...!

1 sc0
2 sl0
3 VLAN-1
4 VLAN-1002
5 VLAN-1004
6 VLAN-1005
7 VLAN-1003
8 4/1
9 4/2
10 4/3
11 4/4
12 4/5
13 4/6
14 4/7
15 4/8
16 4/9
17 4/10
18 4/11
19 4/12
20 4/13
21 4/14
22 4/15
23 4/16
24 4/17
25 4/18
26 4/19
27 4/20
28 4/21
29 4/22
30 4/23

etc, ça liste donc les ports, même ceux qui ne m'interesse pas...!



Le but serait donc d'arriver à un truc du genre:

4/2 9 1 shoot-land-4700-472 Ethernet0
4/7 14 1 shoot-land-3640-943 Ethernet0/0
3/1 134 1 shoot-land-rsm-101 Vlan1
3/2 149 1 shoot-land-2924-104 FastEthernet0/1
3/3 150 1 shoot-land-2924-105 FastEthernet0/1
3/4 151 1 shoot-land-2924-106 FastEthernet0/1
3/5 152 1 shoot-land-2924-107 FastEthernet0/1
3/6 153 1 shoot-land-2924-108 FastEthernet0/1
3/7 154 1 shoot-land-2924-109 FastEthernet0/1
3/8 158 1 shoot-land-3640-943 Ethernet2/3
3/9 160 1 shoot-land-3524-1021 FastEthernet0/23
3/10 161 1 shoot-land-2924-493 FastEthernet0/1
3/11 162 1 shoot-land-2924-494 FastEthernet0/1
3/14 163 1 shoot-land-2924-495 FastEthernet0/1
3/15 164 2 shoot-land-3548-1929 FastEthernet0/1
3/16 165 1 shoot-land-2950-2443 FastEthernet0/1
3/17 167 1 shoot-land-2924-2073 FastEthernet0/1
3/18 168 1 shoot-land-2950-2428 FastEthernet0/1
3/19 170 1 shoot-land-2950-2441 FastEthernet0/1
3/20 171 1 shoot-land-2950-2452 FastEthernet0/1
3/21 246 2 shoot-land-3550-3457 FastEthernet0/1
3/22 248 2 shoot-aube-4006-1932 2/5
3/23 248 3 shoot-land-2950-3270 FastEthernet0/24
5/6 248 4 shoot-land-2651-3606 FastEthernet0/1
5/7 248 5 shoot-land-2621-1232 FastEthernet0/1
5/8 249 1 shoot-land-3548-1473 GigabitEthernet0/1


je ne vous demande bien sur pas de me le faire hein...!
mais si vous pouviez me mettre sur la voie au moins, sachant que ça
doit etre fait en shell, bash si possible...!!


Merci d'avance...!
  • # join

    Posté par  . Évalué à 4.

    La commande join devrait te permettre de faire le lien.
    • [^] # Re: join

      Posté par  (site web personnel) . Évalué à 3.

      franchement ce qui a de cool avec unix c'est que j'en découvre encore aujourd'hui... et pourtant c'est une vieille commande : dispo sur du DEC OSF au boulot !
    • [^] # Re: join

      Posté par  . Évalué à 2.

      C'est effectivement genial...!

      J'arrive donc a joindre mes deux fichiers qui ont le même nombre de ligne.

      Mais le souci vient avec mon fichier qui a plus de ligne que l'autre...!


      example:

      30 patate
      45 poire
      23 haricaut
      34 pomme

      et mon autre fichier du genre

      53 56
      74 89
      45 52
      30 12
      18 100
      34 75
      23 127


      Mais comme il a plus de ligne, ça ne marche pas...!!

      je fais join fich1 $1 fich2 $1 pour dire de prendre en compte la 1er colone seulement. ( si je ne mets pas $1, c'est pareil, la premiere colonne est prise par default)

      Mais il ne me donne que la premiere ligne avec le bon rapport mais ne continu pas...!



      Merci d'eclairer ma lanterne, je retourne voir le fonctionnement de join...!
      • [^] # Re: join

        Posté par  . Évalué à 4.

        Extrait de la page de manuel de join (man join) :

        fichier_1 et fichier_2 doivent être préalablement triés en ordre crois-
        sant (pas nécessairement numérique) sur leur champ utilisé pour la
        fusion.

        après avoir trié tes données:
        23 haricaut
        30 patate
        34 pomme
        45 poire

        18 100
        23 127
        30 12
        34 75
        45 52
        53 56
        74 89



        la commande :join -j 1 fich1 fich2 donne:
        23 haricaut 127
        30 patate 12
        34 pomme 75
        45 poire 52
        • [^] # Re: join

          Posté par  . Évalué à 2.

          pfff j'ai perdu du temps pour rien...!

          en fait mes premieres collones etaient deja dans l'ordre... mais pas le bon...!!

          parce que:

          9
          10
          12
          20
          100

          donne:

          10
          100
          12
          20
          9

          donc ça ne marchais pas...!

          merci en tout cas de tout tes conseil...!

          Mon script marche du feu de dieu, quand je l'aurais fini, je le mettrais ici
          si ça peut aider quelqu'un, même si c'est specifique au grand reseau
          a base de cisco...
          • [^] # Re: join

            Posté par  . Évalué à 2.

            Heu une autre question qui va vous paraitre simple...


            Mon script fonctionne, mais j'aimerais pouvoir traiter les equipements a la volé...!

            Donc comment devrais je faire si je veux qu'a partir d'un fichier contenant
            la liste de mes equipements, il fasse chaque equipement selon la liste...


            Du genre j'ai un fichier qui contient:

            109
            200
            2004
            105

            Comment faire pour que ça lise mon fichier puis fasse a la suite
            tout les equipement...?

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.