• # oui

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

    avec des regexp et en complément en faisant appel à gawk (valeur max des nombres pour une IP)

    • [^] # Re: oui

      Posté par  . Évalué à 3.

      On peut s'en sortir avec seulement une expression régulière, par exemple pour l'IP:

      ^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
      
      
      • [^] # Re: oui

        Posté par  . Évalué à 1.

        J'ai réussi a trouver c'est deux expressions régulieres:

         if (echo $MAC | egrep "^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$")then
        
        

        et

          if (echo $IP | egrep "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$")then
        
        

        Merci beaucoup à vous deux.

        • [^] # Syntaxe IP

          Posté par  . Évalué à 1.

          Salut,

          Pour l'IP cette syntaxe devrait suffire :

          egrep '^([0-9]{1,3}\.){3}[0-9]{1,3}$'
          
          
          • [^] # Re: Syntaxe IP

            Posté par  . Évalué à 2. Dernière modification le 23 janvier 2013 à 17:10.

            Cette dernière expression considère que 999.999.999.999 est valide.

            J'imagine que c'est une solution à la pénurie d'adresse IPv4? :-)

            • [^] # Re: Syntaxe IP

              Posté par  . Évalué à 1.

              Oups ;-(

              Effectivement, je me suis basée sur une solution que j'utilise de temps en temps pour isoler une adresse IP.

              Alors que la demande initiale est de vérifier l'exactitude d'une adresse IP.

              Toutes mes plates ;-)

  • # MErci

    Posté par  . Évalué à 1.

    Merci je me renseigne sur le sujet de suite.

    • [^] # Re: MErci

      Posté par  . Évalué à 1.

      J'ai 3 recherches à faire dans un fichier de se type

      82 192.168.0.1 78:E3:B5:87:25:15 Ethernet2/0/30 3com5500(IP= 192.168.7.12)

      Je souhaite pouvoir faire une recherche par ip ou mac du poste puis pas ip de switch. Cependant mes grep ne fonctionne pas je n'arrive pas a saisir q'un champs .

      une idée?

      • [^] # marche toujours pas

        Posté par  . Évalué à 0.

        Testé avec un awk

         awk '{if($2 = $MAC) {print $1,$2,$3 ;} else {print "Adresse non renseigne"} fi }'
        
        

        la recherche n'abouti pas .

        • [^] # Re: marche toujours pas

          Posté par  (site web personnel) . Évalué à 2. Dernière modification le 24 janvier 2013 à 22:08.

          tu n'as pas la bonne syntaxe pour awk

          echo "82.192.168.0.1 78:E3:B5:87:25:15 Ethernet2/0/30 3com5500(IP= 192.168.7.12)" > ligne_test.txt
          MAC="78:E3:B5:87:25:15"
          gawk -v varMAC=$MAC 'varMAC==$2 { print $1 "  " $3 ; } ' ligne_test.txt
          
          

          donne 82.192.168.0.1 Ethernet2/0/30 (le séparateur est l'espace, si tu veux ce qu'il y a après le = il faut qu'il y ait bien un espace, tu rajoutes $5 et zou

          man gawk pour voir ce que signifie l'option -v ;-)

          à adapter pour l'IP : ^ étant le début de ligne et \)$ te permettant de matcher sur ta fin de ligne…

          un exemple avec plus de lignes serait plus parlant…

          • [^] # Re: marche toujours pas

            Posté par  . Évalué à 0. Dernière modification le 25 janvier 2013 à 13:41.

            1 00-B0-D0-22-46-16 Ethernet1/0/1 3COM5500(IP=192.168.7.12) PileA1 25-01-13 12:10:27
            14 00-08-02-11-D6-01 Ethernet1/0/14 3COM5500(IP=192.168.7.12) PileA1 25-01-13 12:10:27
            15 00-04-75-FE-0E-69 Ethernet1/0/15 3COM5500(IP=192.168.7.12) PileA1 25-01-13 12:10:27
            16 00-04-75-D1-1F-69 Ethernet1/0/16 3COM5500(IP=192.168.7.12) PileA1 25-01-13 12:10:27
            18 00-90-05-00-86-61 Ethernet1/0/18 3COM5500(IP=192.168.7.12) PileA1 25-01-13 12:10:27
            19 00-21-5A-BD-F4-7C Ethernet1/0/19 3COM5500(IP=192.168.7.12) PileA1 25-01-13 12:10:27
            20 00-13-20-63-18-15 Ethernet1/0/20 3COM5500(IP=192.168.7.12) PileA1 25-01-13 12:10:27
            21 00-19-B9-3E-0A-26 Ethernet1/0/21 3COM5500(IP=192.168.7.12) PileA1 25-01-13 12:10:27
            2 00-25-B3-0E-64-FE Ethernet1/0/2 3COM5500(IP=192.168.7.12) PileA1 25-01-13 12:10:27
            24 00-1E-4F-D8-AD-0B Ethernet1/0/24 3COM5500(IP=192.168.7.12) PileA1 25-01-13 12:10:27
            25 00-17-A4-51-4A-B8 Ethernet1/0/25 3COM5500(IP=192.168.7.12) PileA1 25-01-13 12:10:27
            26 00-03-BA-12-53-6A Ethernet1/0/26 3COM5500(IP=192.168.7.12) PileA1 25-01-13 12:10:27
            27 00-03-BA-44-91-58 Ethernet1/0/27 3COM5500(IP=192.168.7.12) PileA1 25-01-13 12:10:27
            28 08-00-20-CE-DB-06 Ethernet1/0/28 3COM5500(IP=192.168.7.12) PileA1 25-01-13 12:10:27
            29 00-1A-A0-E4-00-3A Ethernet1/0/29 3COM5500(IP=192.168.7.12) PileA1 25-01-13 12:10:27
            32 00-19-D1-7F-01-36 Ethernet1/0/32 3COM5500(IP=192.168.7.12) PileA1 25-01-13 12:10:27
            3 00-09-0F-16-36-4C Ethernet1/0/3 3COM5500(IP=192.168.7.12) PileA1 25-01-13 12:10:27
            34 00-1B-54-E1-82-81 Ethernet1/0/34 3COM5500(IP=192.168.7.12) PileA1 25-01-13 12:10:27
            37 00-0A-5E-4B-E4-DF Ethernet1/0/37 3COM5500(IP=192.168.7.12) PileA1 25-01-13 12:10:27
            39 00-15-F2-21-21-0A Ethernet1/0/39 3COM5500(IP=192.168.7.12) PileA1 25-01-13 12:10:27
            41 00-15-F2-0A-97-4E Ethernet1/0/41 3COM5500(IP=192.168.7.12) PileA1 25-01-13 12:10:27
            4 00-1B-21-08-B8-F2 Ethernet1/0/4 3COM5500(IP=192.168.7.12) PileA1 25-01-13 12:10:27
            45 00-01-02-CB-A8-39 Ethernet1/0/45 3COM5500(IP=192.168.7.12) PileA1 25-01-13 12:10:27
            
            

            Voila les premières lignes de mon fichier. j'essaie d'adapter ta solution pour qu'elle fonctionne et de trouver comment pourvoir afficher le résultat de la recherche mac si il trouve ou un message s'il ne trouve pas.

            • [^] # Re: marche toujours pas

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

              Tu peux copier ton fichier de données dans test.txt

              puis créer un rechercheMAC.sh :

              #! /bin/bash
              
              vMAC="50-04-75-FE-0E-69"
              
              echo "MAC recherchee : $vMAC"
              gawk -v varMAC="$vMAC" 'BEGIN { varFound=0; } \
              varMAC == $2 { print $4 ; varFound=1; } \
              END { if ( varFound==0 ) { print "adresse non renseignee"; } }' test.txt
              
              

              en l'exécutant, cela t'affichera :

              MAC recherchee : 50-04-75-FE-0E-69
              adresse non renseignee
              
              

              ou

              MAC recherchee : 00-04-75-FE-0E-69
              3COM5500(IP=192.168.7.12)
              
              

              en corrigeant l'adresse MAC. L'affichage de l'IP au bon format, la gestion des doublons, la recherche par IP, la prise en compte de paramètres… est laissé à titre d'exercice :-)

              ah et sort -n test.txt t'affichera les lignes affichées dans le bon ordre.

Suivre le flux des commentaires

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