Verifique se é um IP correto ou não no Bash (função para validar o IP)

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


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   Ezitoc dito

    Perfeito! Muito interessante. Muito obrigado.

    1.    KZKG ^ Gaara dito

      Obrigado por parar e comentar

  2.   Taregon dito

    Ó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 🙂

    1.    KZKG ^ Gaara dito

      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!

      1.    Taregon dito

        hehe, se for verdade, é assustador pensar nisso, mas a abordagem existe 😛

  3.   alexander mora dito

    Já funciona, basta executar ./script e não sh script.

    1.    KZKG ^ Gaara dito

      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 😉

  4.   Anatur dito

    Olá, obrigado pela ajuda, foi muito útil.