Bash, valider le format d'une variable comme FQDN

Résolu
Bonjour,

Voila la problématique, je demande a un utilisateur d'indiquer un FQDN, que je vais par la suite manipuler.

Je souhaite avant tout vérifier que l'entrée de l'utilisateur à un format valide.

J'ai trouvé la fonction suivante sur internet :
#function check_fqdn
#{
# echo "$1" | grep -P '(?=^.{1,254}$)(^(?>(?!\d+\.)[a-zA-Z0-9_\-]{1,63}\.?)+(?:[a-zA-Z]{2,})$)'
# return $!
#}

Sauf que ça me retourne une erreur : grep: Support for the -P option is not compiled into this --disable-perl-regexp binary

Du coup, temporairement j'ai écris une fonction à l'arrache :
function check_fqdn
{
local entry=""

if [ "$(echo $1 | grep -o '\.' | wc -l)" -lt 1 ]; then
return 1;
elif [ "$(echo $1 | tr '.' ' ' | wc -w)" -lt 2 ]; then
return 1;
else
#totalCount=$(echo $1 | tr '.' ' ' | wc -w)
#count=0
for entry in $(echo $1 | tr '.' ' '); do
if ! [[ $entry =~ ^[A-Za-z0-9\_\-]+$ ]]; then
return 1;
elif [[ ${#entry} -lt 2 || ${#entry} -gt 16 ]]; then
return 1;
fi
#((count++))
done
fi

return 0;
}


Sauf que ducoup j'ai tout un tas de domaine qui vont pas passer.

Quelqu'un as-til une solution alternative ?
Sachant que je ne peux pas installer de packet, (host est pas présent), et que c'est du bash 3.2 ?

Merci à vous :)

--
N'oubliez pas de marquez votre post comme résolut lorsque vous avez eu les réponses à vos questions...
Au royaume des aveugles, les borgnes sont rois.

2 réponses

  1. Contributeur
    Salut,

    Tu es sur quel système ?
    Est-ce que Perl est installé ?

    1
    1. je n'avais pas fait attention, mais un système avec bash 3.2 est une antiquité, et il est inadmissible qu'on fasse travailler qui que ce soit avec des "outils rouillés".
      ou alors c'est une punition. 8O
      0
    2. Bien vu zipe31!
      Perl v5.10.0, on va faire avec :)

      Je suis pas d'accord avec toi lapiel, aucunes once de rouille ne sauraient faire trembler ou remettre en question la stabilitée de certain outils ;)) Aussi vieux soit il.
      0
    3. @Exileuravec un si vieux shell (bash 3.2 n'est plus mis à jour depuis 4 ans),
      le noyau, lui, est-il à jour ?
      0
    4. C'est un noyau custom, à jour.
      Pour le coup je bosse pas dessus.
      0
  2. salut,

    « j'ai tout un tas de domaine qui vont pas passer. »
    par exemple...?

    tu utilises trop de commandes externes : le Remplacement des paramètres permet de faire ce dont tu as besoin. par exemple :
    fqdn='commentcamarche.net'
    for i in ${fqdn//./ }; do echo "$i"; done
    0
    1. Bah déja, ça ne gére pas tout les charactéres valide utf8, je parle des charactéres valide selon la RFC 1035 imbuvable et je parle pas des autres encodage.
      0

Discussions similaires

question pix mot caché

7 réponses