Bash, valider le format d'une variable comme FQDN

Résolu
Exileur Messages postés 1475 Date d'inscription   Statut Membre Dernière intervention   -  
Exileur Messages postés 1475 Date d'inscription   Statut Membre Dernière intervention   -
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 :)

A voir également:

2 réponses

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Salut,

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

1
Utilisateur anonyme
 
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
Exileur Messages postés 1475 Date d'inscription   Statut Membre Dernière intervention   150
 
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
Utilisateur anonyme > Exileur Messages postés 1475 Date d'inscription   Statut Membre Dernière intervention  
 
avec un si vieux shell (bash 3.2 n'est plus mis à jour depuis 4 ans),
le noyau, lui, est-il à jour ?
0
Exileur Messages postés 1475 Date d'inscription   Statut Membre Dernière intervention   150
 
C'est un noyau custom, à jour.
Pour le coup je bosse pas dessus.
0
Utilisateur anonyme
 
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
Exileur Messages postés 1475 Date d'inscription   Statut Membre Dernière intervention   150
 
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