bash: função para validação de IP (IPv4)

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

[ Hits: 7.658 ]

Homepage: http://sanmarcell.wordpress.com

Download bash_validaIP




Esta é a versão Bash deste script:

http://www.vivaolinux.com.br/script/zsh-Funcao-para-validacao-de-IP-%28IPv4%29

Resumindo...

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 tal 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 = ip válido
1 = ip 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) - Versao Bash
#
# Sandro Marcell <sandro_marcell@yahoo.com.br>
# Boa Vista, Roraima - 25/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 tal 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 bash-3.2.39
# - Mais detalhes: 'man bash' e 'http://tools.ietf.org/html/rfc1918'
# - Funcao passivel de melhorias! ;)
#
ValidaIP() {
   local numero_ip=$1

   # Suporte 'built-in' a ER's! legal... =)
   [[ $numero_ip =~ ^[0-9]{2,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]] || return 1
   
   local primeiro_octeto segundo_octeto terceiro_octeto quarto_octeto
   
   OLD_IFS=$IFS
   IFS="."
   
   set - $numero_ip 
   primeiro_octeto=$1
   segundo_octeto=$2
   terceiro_octeto=$3
   quarto_octeto=$4
   
   IFS=$OLD_IFS
   
   # Checa o 2o octeto especifico de cada faixa
   case $primeiro_octeto in
      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
   esac
   
   # 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

Conversor de Dicionarios do Babylon

Atualização do FreeBSD

syncnow - sincronizar diretórios com servidor local

Velox + Ip Dinâmico

Captura ip estatico !!


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts