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 <[EMAIL PROTECTED]> 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" <[EMAIL PROTECTED] <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]