Bonjour,

Débutant en python et venant d'un bts réseau, je m'exerce a faire des scripts pour moi et les autres, etc... et en voulant le perfectionner je suis tombé sur un couack!

Le but de mon script est de montrer le nombre d'adresse IP disponible via un masque sous réseau (hors adresse du réseau et broadcast ) <= et c'est la le problème.
les variables ip1 à 4 sont définies par l'utilisateur par un entier entre 0 et 255. j'ai pensé a mettre avant ma boucle for un ip4=+ 1 pour eviter qu'il affiche la première adresse soit celle du réseau, mais pour evité d'afficher la dernière je ne vois pas trop comment faire.

assez parlé, voila un bout de mon code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
 
 
print("les valeur du CIDR vont de /1 à* /32 \n\n")
cidr = input("Sasir le CIDR du masque voulu (exemple 24 pour /24): \n\n")          
cidr = int(cidr)
 
i = 0                                                                               # Premier compteur.
B_cidr = False                                                                      # Arret de la première boucle. (Boucle_cidr)
Bi_cidr = False                                                                     # Arret de la deuxième boucle.(Boucle.inbriquée_cidr)
 
 
while B_cidr != True:                                                               # Boucle pour informer et verifier si l'utilisateur reste dans les limites définie au début.
    if cidr >= 1 and cidr <= 32:
        while Bi_cidr != True:
            if i == cidr:
                nb_reseau_via_cidr = (2 ** cidr)                                    # Calcul du nombre de réseau via un masque sous réseau
                print("Votre masque sous réseau est {}".format (mask[i]))
                print("Le nombre de réseau disponible est de {}".format (nb_reseau_via_cidr))
                Bi_cidr = True
            else:
                i += 1
        B_cidr = True
    else:
        cidr = input("Sasir le CIDR du masque voulu (exemple 24 pour /24): \n\n")
        cidr = int(cidr)
 
tabmask = [0, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 14, 15, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
# La premiere valeur du tableau mask est de 0 pour la comparaison dans la boucle ci dessous afin d'éviter les erreurs
 
nb_hotes_par_reseau = (2 ** tabmask[i]) - 2   
 
for loop in range (nb_hotes_par_reseau):
        if ip4 < 255:
            print("{}.{}.{}.{}".format (ip1, ip2, ip3, ip4))
            ip4 += 1
 
        elif ip4 > 254 and ip3 < 255:
            print("{}.{}.{}.{}".format (ip1, ip2, ip3, ip4))
            print("")
            ip3 += 1
            ip4 = 0
 
        elif ip4 > 254 and ip3 > 254 and ip2 < 255:
            ip2 += 1
            ip3 = 0
            ip4 = 0
            print("{}.{}.{}.{}".format (ip1, ip2, ip3, ip4))
            print("")
 
        elif ip4 > 255 and ip3 > 255 and ip2 > 255 and ip1 <= 255:
            ip1 += 1
            ip2 = 0
            ip3 = 0
            ip4 = 0
            print("{}.{}.{}.{}".format (ip1, ip2, ip3, ip4))
            print("")
 
        else:
            print("Erreur")
Merci d'avance pour votre aide.

Xen