bash: função para validação de IP (IPv4)
Publicado por Sandro Marcell (última atualização em 10/11/2009)
[ Hits: 8.960 ]
Homepage: http://sanmarcell.wordpress.com
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!!! ;)
#
# 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
}
Atualizando páginas automaticamente com Lynx
Redimensionar e fazer upload de imagens
Gerando lista de arquivos mp3 do disco em arquivo de formato HTML
Backup Automatizado (atualizado)
Nenhum comentário foi encontrado.
File Browser: Crie sua Nuvem Pessoal Privada
A produção de áudio e vídeo no Linux e as distribuições dedicadas a esse fim
Criptografando sua Home com Gocryptfs para tristeza do meliante
A Involução do Linux e as Lambanças Desnecessárias desde o seu Lançamento
O Journal no Linux para a guarda e consulta de logs do sistema
Gerenciamento de Vídeo Híbrido (Intel/NVIDIA) via nvidia-prime no Ubuntu e derivados
Assistindo IPTV no Linux com Fred TV e Lista Free TV
Impressora Tomate MDK-007 no Ubuntu (ou qualquer distro Linux)
Acelerando a compilação de pacotes no Arch Linux (AUR) usando todos os núcleos do processador
Depois não querem que eu fale sobre as baseadas... (4)
Tive um problema ao abrir minha partição Btrfs. Como posso resolver is... (0)









