Parcourir une plage d'adresses IP sous script shell

Résolu
WhitRose Messages postés 4 Date d'inscription vendredi 21 février 2014 Statut Membre Dernière intervention 21 février 2014 - 21 févr. 2014 à 09:37
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 - 21 févr. 2014 à 11:05
Bonjour,

En script shell, je cherche une fonction (boucle) qui permet à partir d'un masque d'adresse IP donne comme sortie tous les adresses IP appropriées, par exemple on donne comme entrer 111.22.33.224/28 on aura comme sortie les adresses IP de 111.22.33.225 vers 111.22.33.238 ?

MERCI

5 réponses

jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344
Modifié par jordane45 le 21/02/2014 à 10:46
-Tu split ta string pour récupérer le 28
-Tu split ton IP pour récupérer le dernier paquet -> 224
-Tu boucle de 1 à 28 et tu ajoutes +1 à ton paquet..
224 ... 225 ... 226 .. etc.. que tu concatene avec les trois autres paquets de ton IP pour recréer une string correspondant à ton IP.

Edit : Je viens de voir que le /28 c'etait le sous réseau....
Masque de sous-réseau : 255.255.255.240
Soit 14 possibilités....

Tu peux donc utiliser la méthode du chiffre magique ^^
http://fr.openclassrooms.com/informatique/cours/calculer-une-plage-d-adresses-avec-la-methode-magique/qu-est-ce-que-la-methode-magique-2

Tu peux aussi t'inspirer de ce site :
http://linuxtricks.asso-linux-online.fr/wiki/masque-et-masque-inverse-wildcard-mask
Qui explique comment, à partir du sous réseau, connaitre le masque..et donc connaitre la plage d'IP.
1
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344
21 févr. 2014 à 11:05
En cherchant un peu je viens de tomber la dessus :

http://stackoverflow.com/questions/16986879/bash-script-to-list-all-ips-in-prefix

Je pense que ça correspond à ce que tu cherches...

1
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344
21 févr. 2014 à 09:53
Bonjour,

Tu nous donnes comme exemple :
par exemple on donne comme entrer 111.22.33.224/28
on aura comme sortie les adresses IP de 111.22.33.225 vers 111.22.33.238
Hors, ta question est relative à
à partir d'un masque d'adresse IP

Là visiblement tu n'utilises pas les masques d'adresse IP.. tu ne fais qu'incrémenter x fois ton ip initiale...

Si tu veux faire une boucle et incrémenter ta variable... tu peux jeter déjà un oeil ici :
http://www.tuteurs.ens.fr/unix/shell/boucle.html#s2_3



0
WhitRose Messages postés 4 Date d'inscription vendredi 21 février 2014 Statut Membre Dernière intervention 21 février 2014
21 févr. 2014 à 10:09
Bonjour,

Plus d'explication: Je veut que la fonction prend comme paramètre 111.22.33.224/28 et la sortie est d'afficher la plage d'adresses (les adresses IP un par un). :)

merci
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344
21 févr. 2014 à 10:11
C'est ce qu'il me semblait..

Donc regarde le lien que je t'ai proposé :
Là visiblement tu n'utilises pas les masques d'adresse IP.. tu ne fais qu'incrémenter x fois ton ip initiale...

Si tu veux faire une boucle et incrémenter ta variable... tu peux jeter déjà un oeil ici :
http://www.tuteurs.ens.fr/unix/shell/boucle.html#s2_3
0
WhitRose Messages postés 4 Date d'inscription vendredi 21 février 2014 Statut Membre Dernière intervention 21 février 2014
21 févr. 2014 à 10:20
Le problème est comment incrémenter x, car elle se calcule directement à partir de /28 (en cherchant tous les combinaisons en binaire de 4 bits de l'identité hôte et les convertir en décimale et enfin on trouvera à chaque fois le dernier octet) !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
WhitRose Messages postés 4 Date d'inscription vendredi 21 février 2014 Statut Membre Dernière intervention 21 février 2014
21 févr. 2014 à 10:53
Merci beaucoup jordane45 :)
0
Rejoignez-nous