Comprovar si és una IP correcta o no en Bash (funció per validar IP)

Aquest és un altre tip que ens pot ajudar en determinades situacions. Faig aquest post més a manera recordatori, doncs sé que necessitaré això en algun moment de nou jajaja.

Quan estem fent algun script en colpejar, I l'usuari ha d'introduir una adreça IP, per a posteriorment nosaltres (l'script) que faci alguna cosa usant aquesta direcció IP, ¿saben on podria fallar tot? ... que l'usuari NO introdueixi una IP, que posi qualsevol ximpleria o una IP incompleta o alguna cosa així, els que programen saben a què em refereixo ... doncs s'ha de programar pensant que fins el més absurd succeirà O_O.

Precisament per evitar aquesta situació, hi ha les funcions o mètodes per valideu una IP, és a dir, per comprovar si la dada que l'usuari va introduir és en realitat una IP o no.

Aquí es les 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
}

Quan l'usuari introdueixi «alguna cosa», aquesta cosa serà el valor de la variable ipdudosa ... el codi seria:
echo "   Inserte lo que desea comprobar si es una IP."
read "ipdudosa"

I ara indicarem que validi el contingut o valor de ipdudosa amb l'anterior funció, i això comprovarà si és una IP en realitat o no. Si és una IP ho dirà, si no és ens dirà que NO és una IP:

if validar_ip ipdudosa;
then echo "Sí, es una IP correcta :D";
else
echo "No, eso NO es una IP";
fi

L'script complet els hi deixo aquí:

Funció per Validar IP (exemple)

Mirin bé que en l'inici declaro que és: #! / Bin / bash ... si posen #! / Bin / sh això no funcionarà, jo vaig estar 2 dies gairebé complets batallant i protestant perquè no em funcionava la funció, i era que tenia posat sh en comptes de bash jajaja.

Bé res més que afegir, hi ha funcions per això en Pitó, Perl i altres idiomes ... de fet, aquesta que els mostro no és l'única forma d'valida IPs en colpejar, Però a mi m'ha resultat molt bé per això la comparteixo 🙂

Salutacions


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   ezitoc va dir

    Perfecte! Molt interessant. Moltes gràcies.

    1.    KZKG ^ Gaara va dir

      Gràcies a tu per passar-te i comentar 😀

  2.   taregon va dir

    Fantàstic! ara intentarem adaptar això "if [[$ ip = ~ ^ [0-9] {1,3} \. [0-9] {1,3} \. [0-9] {1,3} \. [0-9] {1,3} $]]; " perquè detecti quan una ipv6 s'escriu malament ... violent ... o_0 el lio que a d'èsser ficar-li el hexadecimal i els seus 128bits.

    És clar, això és un cas hipotètic que em plantíe 🙂

    1.    KZKG ^ Gaara va dir

      A IPv6 ... fotre, ni de broma ho faig ... deixa deixa ... si ni tan sols entenc bé de què va això de l'IPv6 (funcionament), ni de broma intent validar una IP LOL !!

      1.    taregon va dir

        jeje, si és veritat, aterreix pensar-ho, però el plantejament existeix 😛

  3.   Alexandre Mora va dir

    Ja funciona, només toca executar-./script i no sh script.

    1.    KZKG ^ Gaara va dir

      Sip clar, si fas sh script ho intentarà interpretar amb sh ... hauries de fer bash script perquè fos el mateix que ./script.sh 😉

  4.   Anathur va dir

    Holas, gràcies per la vostra ajuda em va servir de molta ajuda.