shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] ER para validar IP


From: Bruno Gunter Fricke
Subject: Re: [shell-script] ER para validar IP
Date: Sat, 30 Jun 2007 00:40:36 -0300

Olha, eu já dei uma explicação sobre regexp para "casar" um IP válido. Procure 
na lista que você acha.


  ----- Original Message ----- 
  From: Sergio Nery Simoes 
  To: address@hidden 
  Sent: Saturday, June 30, 2007 12:37 AM
  Subject: Re: [shell-script] ER para validar IP


  Olá Wagner,

  você pode otimizar o seu script usando uma váriável para armazenar a ER dos
  octetos e uma ER para o IP em função dessa ER dos octetos.

  Assim:

  # Octeto
  OCT="([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])"

  IP="192.168.0.7"
  echo "$IP" | grep -E "($OCT\.){3}$OCT"

  Caso, não queira usar uma expressão em função de uma variável apenas dê um
  echo no comando grep, pra ver como fica a ER:

  $ echo grep -E "($OCT\.){3}$OCT"
  grep -E
  
(([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])

  Espero que ajude.

  Sergio.

  Em 11/05/07, Wagner Brasileiro <address@hidden>
  escreveu:
  >
  > Obrigado Michel!!
  >
  > Achei aquele código que vc falou, já havia procurado e não tinha
  > encontrado, como comentou dei mais uma olhada e achei, o engraçado é que ele
  > sita validação de IP nos dois guias de consultas rápidas dele mas não mostra
  > propriamente dito.
  >
  > Fiquei meio decepcionado com o exemplo que ele deu do intervalo [0-255],
  > fez parecer que eu estava me matando à toa, mas testei e infelizmente não
  > funciona!!!
  >
  > Meu código final ficou assim:
  >
  > =======================
  >
  > #!/bin/bash
  >
  > if test $# -gt 1
  > then
  > echo "$0:Só testo um número IP por vez! Tente novamente"
  > else
  > if test $# -lt 1
  > then
  > echo "$0:Precisa passar pelo menos um número IP. Tente novamente!"
  > else
  > if echo "."$1"."|egrep
  > 
'\.(2[0-5][0-4]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[1-9])(\.(2[0-5][0-4]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])){2}\.(2[0-5][0-4]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[1-9])\.'
  > then
  > echo "$0: $1 é um IP válido!!!"
  > else
  > echo "$0: $1 Não é um IP válido"
  > fi
  >
  > fi
  > fi
  > ======================
  >
  > Sei que tem marretadas como os delimitadores "." que eu tive que incluir
  > no parâmetro que recebo da linha de comando, mas não via outra maneira por
  > hora, se alguém achar alguma falha, ou alguma otimização será bem vinda.
  > Abraço,
  >
  > Wagner Brasileiro
  >
  > "Michel I. Moreira" <address@hidden <michelmoreira%40gmail.com>>
  > escreveu: Bom dia Wagner,
  >
  >
  > Nosso amigo Aurelio em seu site tem um exemplo de como fazer isso.
  >
  > De uma olhada lá.
  >
  > www.aurelio.net
  >
  > [ ]'s
  >
  > :qw =)
  >
  > Wagner Brasileiro escreveu:
  >
  > > Bom dia,
  > >
  > > Estou quebranco a cabeça, arrancando meus cabelos para criar uma ER
  > > que valide um IP sem contar suas máscaras. Já estava quase terminando
  > > quando me passou pela cabeça testar se colocasse algo além do previsto
  > > se ela deixava pasar, e passou, ou seja:
  > >
  > > variavel=999
  > > echo $variavel|egrep '([0-5]){3}' ele barra, se variavel=555 ele
  > > aceita, porém se variavel=5559 por exemplo ele também aceita e notei
  > > que aí que minha ER stava furada. Claro que amarrei cuidadosamente os
  > > limites de uma faixa IP só usei esse exemplo para ilustrar de manera
  > > rápida meu problema, que na realidade é aceitar apenas a cadeia e mais
  > > nada além dela ao contrário do que eu pensava, os limitadors não
  > > funcionam assim, a ER casa com qualquer outra coisa que atenda
  > > basicamente a 3 números até cinco cada, desde que tenha esta string
  > > dentro. Minha pergunta: Meu erro está na ERR ou na instrução de
  > > verificação? Como posso fazer esse limite?
  > >
  > > Se alguém tiver uma ER dessas prontas eu aceito, o resto do Script eu
  > > já fiz, não achei necessário mandá-lo pois não era o foco, mas
  > > gostaria mesmo assim de uma explicação no que estou errando, pois até
  > > onde eu verifiquei cada bloco isolado da ER completa para validar
  > > todas as seqüências válidas de um IP, elas funcionavam, mas quando as
  > > juntava num "OU" devido a esse problema elas terminavama aceitando
  > > muitas outras coisas. Foquei-me apenas no octeto 254, verificar pra
  > > que a ER fizesse todos os teste possíveis para aceitar qq número nesse
  > > intervalo ou somente dois algarismos ou apenas um incluindo zero.
  > >
  > > __________________________________________________
  > > Fale com seus amigos de graça com o novo Yahoo! Messenger
  > > http://br.messenger.yahoo.com/ <http://br.messenger.yahoo.com/>
  > >
  > > [As partes desta mensagem que não continham texto foram removidas]
  > >
  > >
  >
  >
  >
  >
  >
  > __________________________________________________
  > Fale com seus amigos de graça com o novo Yahoo! Messenger
  > http://br.messenger.yahoo.com/
  >
  > [As partes desta mensagem que não continham texto foram removidas]
  >
  > 
  >

  [As partes desta mensagem que não continham texto foram removidas]



   

[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]