benofdark a écrit 39 commentaires

  • [^] # Re: Bon autant vous montrez le complet ça vous aidera peut etre

    Posté par  . En réponse au message Utilisation de awk pour la jointure de 2 fichiers. Évalué à 0.

    Une nouvelle question sur le même exemple de script, je me demandé si dans le fichier résulté il était possible de supprimer les ligne ayant un champ commun (exemple adresse mac) en respectant leur ordre d'arrivé dans le fichier.

  • [^] # ça marche

    Posté par  . En réponse au message Utilisation de awk pour la jointure de 2 fichiers. Évalué à 1.

    vous êtes vraiment énorme , votre aide est précieuse et me redonne envie de me mettre sérieusement au bash.

    ça doit vous semblez anodin mais j'ai beaucoup appris je vous remercie.

    Je vais maintenant essayer de dynamiser encore plus le scripts en faisant appelle a un fichier contenant toute les adresse de switch .

    merci encore une grosse partie recherche et réflexion m'attend je reviendrai vers vous en cas de problème.

    cordialement benofdark.

  • [^] # Re: Bon autant vous montrez le complet ça vous aidera peut etre

    Posté par  . En réponse au message Utilisation de awk pour la jointure de 2 fichiers. Évalué à 1.

    #!/bin/bash
    ########################################################################
    ########################################################################
    
    #Recuperation des addresse mac dans un fichier au format decimal et hexa
    #creation du fichier mac1016.dat contenant la relation mac hex / mac deci
    snmpwalk -v 2c -c public -OX  xxx.xxx.xxx.xxx 1.3.6.1.2.1.17.4.3.1.1 | \
    cut -c29- | \
    awk -F " " '{ print $1,$4":"$5":"$6":"$7":"$8":"$9 }' | \
    sort > /scriptsOID/mac1016.dat
    
    #recuperation du portbridge et creation de bridge.dat
    snmpwalk -v 2c  -c public -Of  xxx.xxx.xxx.xxx .1.3.6.1.2.1.17.4.3.1.2 |\
    cut  -c44- | \
    awk -F " " '{ print $1,$4 }' | \
    sort > /scriptsOID/bridge.dat
    
    #recuperation du portID et créion du fichier portid.dat
    snmpwalk -v 2c  -c public -Of  xxx.xxx.xxx.xxx .1.3.6.1.2.1.17.1.4.1.2 | \
    cut  -c45- | \
    awk -F " " '{ print $4,$1 }' | \
    sort > /scriptsOID/portid.dat
    
    #recuperation du port et créion de port.dat
    snmpwalk -v 2c  -c public -Of  xxx.xxx.xxx.xxx .1.3.6.1.2.1.31.1.1.1.1 | \
    cut -c78- | \
    awk -F " " '{ print $1,$4 }' > /scriptsOID/port.dat
    
    #jointure entre les fichier .dat pour former un fichier unique servant de base de donnee
            #jointure de mac1016.dat et port bridge.dat pour former ma .sortc
            join -1 1 -2 1 ./mac1016.dat <(fgrep -f <(cut -d ' ' -f 1 ./mac1016.dat) bridge.dat) | \
            awk -F " " '{ if ($3<49) print $3, $2} ' | \
            sort > mac.sort
    
            #jointure de portid.dat et port.dat pour former portname.sort
            join -1 1 -2 1 ./portid.dat <(fgrep -f <(cut -d ' ' -f 1 ./portid.dat) port.dat) | \
            cut -d ' ' -f 2,3 | \
            awk -F " " '{ if ($1<49) print $1, $2} ' >./portname.sort
    
            #jointure de mac16bridge.dat et portname.dat pour former le fichier final BD.dat
            join -1 1 -2 1 ./mac.sort <(fgrep -f <(cut -d ' ' -f 1 ./mac.sort) portname.sort)> BD.dat
    
    

    Ma dernière jointure est toujours impossible , je cherche activement une solution.

    Voici le contenu des 2 fichiers a jointer au cas ou vous auriez une idée.

    mac.sort
    1 00:B0:D0:22:46:16
    2 00:25:B3:0E:64:FE
    26 00:03:BA:12:53:6A
    27 00:03:BA:44:91:58
    28 08:00:20:CE:DB:06
    40 00:60:08:2D:27:28
    
    

    et le deuxieme :

    portname.sort
    1 Ethernet1/0/1
    2 Ethernet1/0/2
    3 Ethernet1/0/3
    4 Ethernet1/0/4
    5 Ethernet1/0/5
    6 Ethernet1/0/6
    7 Ethernet1/0/7
    8 Ethernet1/0/8
    9 Ethernet1/0/9
    10 Ethernet1/0/10
    11 Ethernet1/0/11
    12 Ethernet1/0/12
    13 Ethernet1/0/13
    14 Ethernet1/0/14
    15 Ethernet1/0/15
    16 Ethernet1/0/16
    17 Ethernet1/0/17
    18 Ethernet1/0/18
    19 Ethernet1/0/19
    20 Ethernet1/0/20
    21 Ethernet1/0/21
    22 Ethernet1/0/22
    23 Ethernet1/0/23
    24 Ethernet1/0/24
    25 Ethernet1/0/25
    26 Ethernet1/0/26
    27 Ethernet1/0/27
    28 Ethernet1/0/28
    29 Ethernet1/0/29
    30 Ethernet1/0/30
    31 Ethernet1/0/31
    32 Ethernet1/0/32
    33 Ethernet1/0/33
    34 Ethernet1/0/34
    35 Ethernet1/0/35
    36 Ethernet1/0/36
    37 Ethernet1/0/37
    38 Ethernet1/0/38
    39 Ethernet1/0/39
    40 Ethernet1/0/40
    41 Ethernet1/0/41
    42 Ethernet1/0/42
    43 Ethernet1/0/43
    44 Ethernet1/0/44
    45 Ethernet1/0/45
    46 Ethernet1/0/46
    
    

    Merci d'avance

  • [^] # Re: Bon autant vous montrez le complet ça vous aidera peut etre

    Posté par  . En réponse au message Utilisation de awk pour la jointure de 2 fichiers. Évalué à 1.

    Merci beaucoup pour ces simplifications j'avoue que c'est beaucoup plus lisible.

    je vais tester quelque truc que j'ai trouvé en fin de journée hier et je vous donnerai l'avancement .

    Merci pour tout ce temps que vous me consacré.

  • # Bon autant vous montrez le complet ça vous aidera peut etre

    Posté par  . En réponse au message Utilisation de awk pour la jointure de 2 fichiers. Évalué à 0.

     #!/bin/bash
     ########################################################################
    
     #Recuperation des addresse mac dans un fichier au format decimal et hexa
     snmpwalk -v 2c -c public -OX xxx.xxx.xxx.xxx 1.3.6.1.2.1.17.4.3.1.1 > /scriptsOID/mac1016.tmp
    
     #creation du fichier mac1016.dat contenant la relation mac hex / mac deci
     while read line;
     do echo -e ${line:29} >> /scriptsOID/mac1016b.tmp
     done < /scriptsOID/mac1016.tmp;
     awk -F " " '{ print $1,$4":"$5":"$6":"$7":"$8":"$9 }' /scriptsOID/mac1016b.tmp >>      /scriptsOID/mac1016.dat
    
    #recuperation du portbridge
    snmpwalk -v 2c  -c public -Of  xxx.xxx.xxx.xxx .1.3.6.1.2.1.17.4.3.1.2 > /scriptsOID/bridge.tmp
    
    #creation du fichier bridge.dat
    while read line;
    do echo -e ${line:44} >> /scriptsOID/bridgeb.tmp
    done < /scriptsOID/bridge.tmp
    awk -F " " '{ print $1,$4 }' /scriptsOID/bridgeb.tmp >> /scriptsOID/bridge.dat
    
    #recuperation du portID**
    snmpwalk -v 2c  -c public -Of  xxx.xxx.xxx.xxx .1.3.6.1.2.1.17.1.4.1.2 > /scriptsOID/portid.tmp
    
    #creation du fichier portid.dat
    while read line;
    do echo -e ${line:44} >> /scriptsOID/portidb.tmp
    done < /scriptsOID/portid.tmp
    awk -F " " '{ print $4,$1 }' /scriptsOID/portidb.tmp >> /scriptsOID/portid.dat
    
    #recuperation du port
    snmpwalk -v 2c  -c public -Of  xxx.xxx.xxx.xxx .1.3.6.1.2.1.31.1.1.1.1 >> port.tmp
    
    #creation du fichier port.dat
    while read line;
    do echo -e ${line:77} >> /scriptsOID/portb.tmp
    done < /scriptsOID/port.tmp
    awk -F " " '{ print $1,$4 }' /scriptsOID/portb.tmp >> /scriptsOID/port.dat
    
    #jointure entre les fichier .dat pour former un fichier unique servant de base de donnee
        #jointure de mac1016.dat et port bridge.dat pour former mac16bridge.dat
        join -1 1 -2 1 ./mac1016.dat <(fgrep -f <(cut -d ' ' -f 1 ./mac1016.dat) bridge.dat)> mac16bridge.dat
        awk -F " " '{ if ($3<49) print $3, $2} ' ./mac16bridge.dat > ./mac16bridge.tmp
        sort mac16bridge.tmp > mac.sort
    
        #jointure de portid.dat et port.dat pour former portname.dat
        join -1 1 -2 1 ./portid.dat <(fgrep -f <(cut -d ' ' -f 1 ./portid.dat) port.dat)>  portname.dat
        cut -d ' ' -f 2,3 ./portname.dat >portname.tmp
        awk -F " " '{ if ($1<49) print $1, $2} ' ./portname.tmp > ./portname.tmp2
        sort ./portname.tmp2 > ./portname.sort
    
        #jointure de mac16bridge.dat et portname.dat pour former le fichier final BD.dat
        join -1 1 -2 1 ./mac.sort <(fgrep -f <(cut -d ' ' -f 1 ./mac.sort) portname.sort)> BD.dat
    
    

    Pour le moment mon scripts ressemble à ça il sert a récupéré en SNMP les info d'un switch et à établir un tableau sous la forme :
    Adresse mac port ip du switch

    Mais la jointure me pose toujours problème.

    Mon scripts n'est pas très beau mais c'est plutôt nouveau tout ça pour moi .

  • [^] # Re: Bizarre bizarre

    Posté par  . En réponse au message Utilisation de awk pour la jointure de 2 fichiers. Évalué à 0.

    serait il possible dans mes fichiers de remplacer dans le premier champ les 1,2,3,4,5,6,7,8,9 par 01,02,03,04,05,06,07,08,09?

  • [^] # Re: Bizarre bizarre

    Posté par  . En réponse au message Utilisation de awk pour la jointure de 2 fichiers. Évalué à 0.

    Une idée, une solution je regarde du coté de awk et des tableaux là !

  • [^] # Re: Bizarre bizarre

    Posté par  . En réponse au message Utilisation de awk pour la jointure de 2 fichiers. Évalué à 1.

    je ne peut donc pas faire de jointure comme précédemment ?

  • # Bizarre bizarre

    Posté par  . En réponse au message Utilisation de awk pour la jointure de 2 fichiers. Évalué à 1.

    Le truc un eu bizarre c'est que j'ai fait plusieurs jointures avec ta solution cependant une me résiste
    file 1:
    1 12:15:a5:45
    2 17:15:a5:d5
    3 12:ab:a5:a5
    41 00:15:25:a5
    42 18:14:a5:75

    file 2

    1 eth1
    2 eth10
    3 eth5
    4 eth6
    5 eth22

    40 eth8
    41 eth17
    42 eth9
    43 eth11

    une fois de plus il me dit que file 1 n'est pas trié, est ce a cause des trou ?

  • [^] # Re: Avec join un brin de fgrep et un soupçon de cut

    Posté par  . En réponse au message Utilisation de awk pour la jointure de 2 fichiers. Évalué à 1.

    après quelque adaptation j'ai réussi a faire fonctionner ta solution merci beaucoup. il me reste 2 ou 3 problèmes a résoudre mais je devrai m'en sortir.

  • [^] # Re: Avec join un brin de fgrep et un soupçon de cut

    Posté par  . En réponse au message Utilisation de awk pour la jointure de 2 fichiers. Évalué à 0.

    j'ai tester en ajoutant a mon script un sort -r sur chacun de mes chier sur le champ de la jointure, mais le résultat est toujours le même .

  • [^] # Re: Avec join un brin de fgrep et un soupçon de cut

    Posté par  . En réponse au message Utilisation de awk pour la jointure de 2 fichiers. Évalué à 0.

    j'obtient
    join: file 2 is not in sorted order
    join: file 1 is not in sorted order

    je ne comprend pas vraiment d'ou vient le probleme.

  • [^] # Re: join

    Posté par  . En réponse au message Utilisation de awk pour la jointure de 2 fichiers. Évalué à 0.

    j'ai testé
    join -1 2 -2 1 -o 1.1 2.2 -i --nocheck-order fichier1 fichier 2

    résultat :
    4 Chantal
    5 Daniel

  • [^] # Re: join

    Posté par  . En réponse au message Utilisation de awk pour la jointure de 2 fichiers. Évalué à 0.

    plusieurs tests mais les résultats obtenu ne sont pas concluant, comme si il commencé la jointure au milieu du fichier , je pense que c'est du au fait que les fichiers sont de taille différente et qu'il y a des trous dans mon champ de jointure.