Pb de comptage d'adresse IP
C'est encore moi avec un nouveau problème...
J'ai établit un bout de script qui me compte le nombre d'adresse IP dans une plage. Voici le compte fonctionnel qui marche avec des IP entre xxx.xxx.8.xxx à xxx.xxx.11.xxx. enfin qui marche, pas tout à fait, des que je test avec un passage de la plage 9 à 10 ca tourne sans fin. Sinon ca fonctionne. J'ai beau regarde le passage de ces deux plages, j'ai pas trouvé de problème. Surtout que j'utilise deja ce script pour faire mes recherches sur les IP (Lance un script à chaque nouvelle IP).
Code:
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
| # -*- coding: cp1252 -*-
### Librairies utiles
import string #Permet de faire des operations sur les chaines de caractères (atoi : transforme un string et int)
import os #Permet de faire des operations systeme
import re
###
adr_deb = "172.18.9.254"
adr_fin = "172.18.10.2"
plage = "Neuf"
boucleip = 0
adr_ip = adr_deb
adr_ip_nb = ""
nbip = 1 #On initialise le nombre d'IP à 1
plagecompt = plage
i = 0
if plagecompt == "Huit" or plagecompt == "Neuf":
while boucleip == 0:
if adr_ip.strip() == adr_fin.strip():
boucleip = 1
else:
adr_ip_old = adr_ip[0:9] #On sauvegarde le début de l'IP
adr_ip_nb_new = string.atoi(adr_ip[9:12]) #On transforme la chaine en nombre du dernier chiffre
adr_ip_nb_new = adr_ip_nb_new + 1
nbip = nbip + 1
adr_ip_nb_new = repr(adr_ip_nb_new) #On transforme le nombre en chaine
adr_ip = adr_ip_old + adr_ip_nb_new
if adr_ip[9:12] == "256":
if plagecompt == "Huit":
adr_ip = re.sub("8.256", "9.1", adr_ip)
plagecompte = "Neuf"
else:
adr_ip = re.sub("9.256", "10.1", adr_ip)
plagecompt = "Dix"
boucleip = 1
#####################
boucleip = 0 #On remet la boucle à Zéro
#####################
if plagecompt == "Dix" or plagecompt == "Onze":
while boucleip == 0:
if adr_ip.strip() == adr_fin.strip():
boucleip = 1
else:
adr_ip_old = adr_ip[0:10] #On sauvegarde le début de l'IP
adr_ip_nb_new = string.atoi(adr_ip[10:13]) #On transforme la chaine en nombre du dernier chiffre
adr_ip_nb_new = adr_ip_nb_new + 1
nbip = nbip + 1
adr_ip_nb_new = repr(adr_ip_nb_new) #On transforme le nombre en chaine
adr_ip = adr_ip_old + adr_ip_nb_new
if adr_ip[10:13] == "256":
if plagecompt == "Dix":
adr_ip = re.sub("10.256", "11.1", adr_ip)
plagecompt = "Onze"
print "nbip = ", nbip |
Une idée pour l'améliorer?
EDIT : En fait ca marche tout le temps. Il faut juste que la plage de départ soit bonne sinon ca merde un peu. Je le marque en résolution car j'ai bien cerne en amont pour que la plage soit bonne. Je ne supprime pas mon message poru les personnes voulant faire ce genre de comptage.