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: Sergio Nery Simoes
Subject: Re: [shell-script] ER para validar IP
Date: Sat, 30 Jun 2007 00:41:04 -0300

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.10 <http://192.168.0.7/>"
echo "$IP" | grep -E "\b($OCT\.){3}$OCT\b"

Caso, não queira usar uma expressão em função de uma variável:

grep -E
"\b(([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])\b"


Espero que ajude.

Sergio.



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]



reply via email to

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