Separar notação de contagem de bits

1. Separar notação de contagem de bits

Judson A. Borges
karvox

(usa Ubuntu)

Enviado em 08/11/2008 - 23:33h

Salve comunidade!

Gente boa eu gostaria de saber como fazer o seguinte script:

È um script para endereçamento de rede onde em uma determinada parte do script é digitado por exemplo:

./script 192.168.1.0 ou
./script 192.168.1.0/255.255.240.0 ou
./script 192.168.1.0/27

Então o script tem que fazer:

se [ endereço_apenas ] então
NET=endereço_apenas

senao
se [ endereço/mascara] então
NET=endereço
NETMASK=mascara

senão
se [ endereço/bits ] então
NET=endereço
NETMASK_BITS=bits

senão
echo "alguma mensagem"

Dificuldade:

com o cut ou o awk dá certo para o 2º e 3º caso usando a "/" como delimitador, mas para o 1º caso não dá certo pois não tem um parâmetro para se analisar, já tentei várias formas não não estou conseguindo ou isso é muito simples e eu não estou enxergando a lógica correta, se alguem se prontificar a me ajudar desde já agradeço!

Obrigado.


  


2. Re: Separar notação de contagem de bits

Daniel Cardoso Alves
dcardosoa

(usa Slackware)

Enviado em 09/11/2008 - 00:13h

Já pensou usar expessoão regular para fazer estes filtros?


3. Re: Separar notação de contagem de bits

Judson A. Borges
karvox

(usa Ubuntu)

Enviado em 09/11/2008 - 00:22h

Rapaz, expressão regular é o meu fraco!


4. Re: Separar notação de contagem de bits

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 09/11/2008 - 03:19h

No primeiro caso, você poderia tentar utilizar o grep, com a seguinte regex:

grep -E "^[1-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$"

Ex.:

-------------
#!/bin/sh
if echo "$1" | grep -Eq "^[1-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$"
then
echo "IP válido."
else
echo "IP inválido."
exit 1
fi
-------------

$ ./script.sh 192.168.1.0
IP válido.

$ ./script.sh 19235.168.1abc.0XX4
IP inválido.






5. Re: Separar notação de contagem de bits

Judson A. Borges
karvox

(usa Ubuntu)

Enviado em 11/11/2008 - 00:52h

SMarcell,

Resolvi de outra forma, não tão elegante, mas deu para resolver.
Agora essa sua dica já resolveu outro problema, valeu mesmo, muito obrigado.

PS: Agora tenho um terceiro problema! É o seguinte:

Agora tenho que validar uma máscara de rede, ex: 255.255.240.0 ou 255.128.0.0 ou 255.255.255.252, etc. Mas o grande problema é que em máscaras de rede os octetos tem que ser menores ou iguais a 255 e múltiplos de 8, tem como implementar isso com regex?

Um abraço!








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts