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

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

[ Hits: 8.527 ]

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

Registar automáticamente o dns de uma maquina no DNS via DHCP

olhaMeuDesktop 0.1 - Aplicativo para gravar Área de Trabalho

Ajuste Dinâmico do Governador de CPU no Linux

Backup com TAR em LOG usando FITA LTO/DLT com filtro de arquivos

mnb-protector


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts