Essa é mais uma dica que pode nos ajudar em determinadas situações. Faço esse post mais como um lembrete, pois sei que vou precisar disso em algum momento novamente hahaha.
Quando estamos fazendo algum script em bater, e o usuário deve inserir um endereço IP, para depois nós (o script) fazermos algo usando aquele endereço IP, você sabe onde tudo pode dar errado? ... que o usuário NÃO insira um IP, para colocar qualquer besteira ou um IP incompleto ou coisa parecida, quem programa sabe o que quero dizer ... porque deve ser programado pensando que até o mais absurdo vai acontecer O_O.
Justamente para evitar essa situação, existem funções ou métodos para validar um IP, ou seja, verificar se o dado que o usuário inseriu é realmente um IP ou não.
Aqui eu os deixo:
function validar_ip()
{
local ip=$ipdudosa
local stat=1
if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]];
then
OIFS=$IFS
IFS='.'
ip=($ip)
IFS=$OIFS
[[ ${ip[0]} -le 255 && ${ip[1]} -le 255 && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
stat=$?
fi
return $stat
}
Quando o usuário insere "algo", esse algo será o valor da variável duvidoso ... o código seria:
echo " Inserte lo que desea comprobar si es una IP."
read "ipdudosa"
E agora vamos indicar para validar o conteúdo ou valor de duvidoso com a função acima, e isso irá verificar se é realmente um IP ou não. Se for um IP dirá que sim, se não for, dirá que NÃO é um IP:
if validar_ip ipdudosa;
then echo "Sí, es una IP correcta :D";
else
echo "No, eso NO es una IP";
fi
Deixo o script completo aqui:
Função para validar IP (exemplo)
Olha bem que no começo eu declaro que é: #! / Bin / bash ... se eles colocarem # / Bin / sh Isso não vai funcionar, passei quase 2 dias lutando e protestando porque a função não funcionou pra mim, e era isso que eu tinha no sh em vez de bash hahaha.
Bem, nada mais a acrescentar, existem funções para isso em Python, Perl e outras linguagens ... aliás, esta que vos mostro não é a única forma de validar IPs em bater, mas tem sido muito bom para mim, é por isso que divido 🙂
lembranças
Perfeito! Muito interessante. Muito obrigado.
Obrigado por parar e comentar
Ótimo! agora vamos tentar adaptar isso “if [[$ ip = ~ ^ [0-9] {1,3} \. [0-9] {1,3} \. [0-9] {1,3} \ . [0-9] {1,3}]]; " para que ele detecte quando um ipv6 está com erros ortográficos ... violento ... o_0 a bagunça que tem que ser colocado o HEXadecimal e seus 128bits.
Claro, este é um caso hipotético que levantei 🙂
Para o IPv6 ... droga, nem brinco ... deixa pra lá ... se eu nem entendo bem do que se trata o IPv6 (operação), nem tento validar um IP LOL!
hehe, se for verdade, é assustador pensar nisso, mas a abordagem existe 😛
Já funciona, basta executar ./script e não sh script.
Sim, claro, se você fizer sh script, ele tentará interpretá-lo com sh ... você teria que fazer o script bash para torná-lo igual a ./script.sh 😉
Olá, obrigado pela ajuda, foi muito útil.