zsh: Função para validação de IP (IPv4)

Publicado por Sandro Marcell (última atualização em 29/10/2009)

[ Hits: 5.670 ]

Homepage: http://sanmarcell.wordpress.com

Download zsh_validaIP




Esta função toma como base a RFC 1918, que especifica quais as faixas de IPs devem ser usadas numa rede privada. Segundo ela as faixas disponíveis para esse fim são:

10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255

Portanto esta função só validará IPs que estejam numa das faixas acima.

Para usá-la basta passar como argumento o ip a ser validado e posteriormente checar o código de retorno da função, em que:

0 = válido
1 = inválido

Não é grande coisa mas talvez possa vir a ser útil a alguém!

Falou!!! ;)

  



Esconder código-fonte

#
# Funcao para validacao de ip's (IPv4)
#
# Sandro Marcell <sandro_marcell@yahoo.com.br>
# Boa Vista, Roraima - 24/10/2009
#
# Esta funcao toma como base a 'RFC 1918' que especifica quais as faixas de
# ip's devem ser usadas numa rede privada. Segundo ela as faixas disponiveis
# para esse fim sao:
# -> 10.0.0.0 - 10.255.255.255
# -> 172.16.0.0 - 172.31.255.255
# -> 192.168.0.0 - 192.168.255.255
# Portanto esta funcao so validara ip's que estejam numa das faixas acima.
#
# Para utiliza-la basta passar como argumento o ip a ser validado e posteriormente
# checar o codigo de retorno da funcao, em que:
# 0 = ip valido
# 1 = ip invalido
#
# Obs.:
# - Funcao criada sob o zsh 4.3.9
# - Mais detalhes: 'man zsh' e 'http://tools.ietf.org/html/rfc1918'
# - Funcao passivel de melhorias! ;)
#
function ValidaIP {
   # Suporte 'built-in' a ER's! Coisas do zsh =)
   [[ $@ =~ "^[0-9]{2,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" ]] || return 1
   
   typeset -a numero_ip
   typeset primeiro_octeto segundo_octeto terceiro_octeto quarto_octeto

   numero_ip=(${(s:.:)@})
   primeiro_octeto=$numero_ip[1]
   segundo_octeto=$numero_ip[2]
   terceiro_octeto=$numero_ip[3]
   quarto_octeto=$numero_ip[4]

   # Checa o 2o octeto especifico de cada faixa
   case $primeiro_octeto {
      (10)  [[ $segundo_octeto =~ "^0[0-9][0-9]?" ]] && return 1 # Invalida tipos '0x' ou '0xx'
            (( segundo_octeto >= 0 && segundo_octeto <= 255 )) || return 1 ;;
      (172) (( segundo_octeto >= 16 && segundo_octeto <= 31 )) || return 1 ;;
      (192) (( segundo_octeto == 168 )) || return 1 ;;
      (*) return 1
   }
   
   # Ja que o 3o e 4o octetos sao comuns as tres faixas
   [[ $terceiro_octeto =~ "^0[0-9][0-9]?" ]] || [[ $quarto_octeto =~ "^0[0-9][0-9]?" ]] && return 1
   (( terceiro_octeto >= 0 && terceiro_octeto <= 255 )) || return 1
   (( quarto_octeto >= 0 && quarto_octeto <= 255 )) || return 1

}

Scripts recomendados

SPEEDY: Adicionando DNS no Resolv.conf

Script para testar a conexão do computador

Informações do Sistema

Números de Fibonacci

zipxback.sh


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário