Menu

Bash, valider le format d'une variable comme FQDN [Résolu]

Messages postés
1349
Date d'inscription
mercredi 31 août 2011
Statut
Membre
Dernière intervention
9 mai 2019
- - Dernière réponse : Exileur
Messages postés
1349
Date d'inscription
mercredi 31 août 2011
Statut
Membre
Dernière intervention
9 mai 2019
- 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 :)

Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
36521
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
19 mai 2019
5785
1
Merci
Salut,

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

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 39010 internautes nous ont dit merci ce mois-ci

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
Exileur
Messages postés
1349
Date d'inscription
mercredi 31 août 2011
Statut
Membre
Dernière intervention
9 mai 2019
101 -
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.
Utilisateur anonyme > Exileur
Messages postés
1349
Date d'inscription
mercredi 31 août 2011
Statut
Membre
Dernière intervention
9 mai 2019
-
avec un si vieux shell (bash 3.2 n'est plus mis à jour depuis 4 ans),
le noyau, lui, est-il à jour ?
Exileur
Messages postés
1349
Date d'inscription
mercredi 31 août 2011
Statut
Membre
Dernière intervention
9 mai 2019
101 -
C'est un noyau custom, à jour.
Pour le coup je bosse pas dessus.
Commenter la réponse de zipe31
0
Merci
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
Exileur
Messages postés
1349
Date d'inscription
mercredi 31 août 2011
Statut
Membre
Dernière intervention
9 mai 2019
101 -
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.
Commenter la réponse de Utilisateur anonyme