Bash, valider le format d'une variable comme FQDN

Résolu/Fermé
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 - 29 juin 2018 à 14:11
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 - 3 juil. 2018 à 15:18
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
30 juin 2018 à 10:55
Salut,

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

1
Utilisateur anonyme
30 juin 2018 à 15:53
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 mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
1 juil. 2018 à 00:11
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 mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022
1 juil. 2018 à 01:48
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 mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
3 juil. 2018 à 15:18
C'est un noyau custom, à jour.
Pour le coup je bosse pas dessus.
0
Utilisateur anonyme
29 juin 2018 à 22:00
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 mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
1 juil. 2018 à 00:14
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