Expressions regulieres

cachouCacharel Messages postés 13 Statut Membre -  
dubcek Messages postés 19023 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

SVP j'aimerais faire un controle sur une valeur d'adresse IP a entrer en utilisant les expressions regulieres. j'aimerais que l'adresse entree puisse repondre a un format bien precis par exemple 172.10.X.X et j'aimerai au niveau du 3eme octet specifier un certain nombre de sous-reseaux. par exemple 10, 20 et 76 uniquement. donc 172.22.10/20/76.X avec 0<X<255


voila ce que j'ai utilise


echo " Veuillez entrer l'adresse IP"
read adresse_IP
while [[ $adresse_IP != 172\.22\.[10,20,76]\.[0-2][0-5][0-4] ]]
do
echo " Vous avez entre une adresse IP non valide, veuillez ressaisir"
read adresse_IP
done

ca ne marche pas. vouspouvez m'aider SVP???

3 réponses

dubcek Messages postés 19023 Date d'inscription   Statut Contributeur Dernière intervention   5 640
 
hello
autre méthode
echo " Veuillez entrer l'adresse IP"   
read adresse_IP   
declare -A a ; for x in 172.22.{10,20,76}.{0..255}; do a[$x]=999;done 
while [[ -z "${a[$adresse_IP]}" ]]   
do   
echo " Vous avez entre une adresse IP non valide, veuillez ressaisir"   
read adresse_IP   
done   
1
Utilisateur anonyme
 
il me semble, que, pour construire le tableau, une boucle for est plus rapide, non?
0
dubcek Messages postés 19023 Date d'inscription   Statut Contributeur Dernière intervention   5 640
 
effectivement, et nettement
j'ai modifié
0
cachouCacharel Messages postés 13 Statut Membre
 
SOS...j'ai besoin de votre aide je en prie!!!!
0
Utilisateur anonyme
 
salut,

tu mélanges les regex et les globs!
seul =~ teste les regex.

tu ne peux pas tester l'adresse machine comme tu le fais, car la machine 159 ne sera pas valider puisque 9 est supérieur à [0-4]

je testerais chaque partie de l'adresse (c'est laborieux, je sais :()
en bash:
read -p'entrez une adresse : ' ip
IFS='.' read re zo sub ma <<<"$ip"
if [ $re.$zo = 172.22 ]
then
   if [[ $sub = @(10|20|76) ]]
   then
      if [ $ma -lt 255 ]
      then
etc
0