On tire les IP au hasard : beaucoup plus rapide
darcs-hash:20040909065416-d1718-897656530fac43b6a46432b1114881dfd0a1e9ce.gz
This commit is contained in:
parent
91d18f5d33
commit
4b82930d86
1 changed files with 19 additions and 10 deletions
|
@ -31,6 +31,8 @@ from time import sleep,localtime
|
||||||
|
|
||||||
import ldap_secret
|
import ldap_secret
|
||||||
|
|
||||||
|
random.seed() # On initialise le générateur aléatoire
|
||||||
|
|
||||||
##################################################################################
|
##################################################################################
|
||||||
### Différent services redémarrables
|
### Différent services redémarrables
|
||||||
#dns, dhcp, firewall, bornes_wifi(nom_borne), conf_wifi, bl_carte_etudiant, switch(chbre)
|
#dns, dhcp, firewall, bornes_wifi(nom_borne), conf_wifi, bl_carte_etudiant, switch(chbre)
|
||||||
|
@ -1716,6 +1718,7 @@ class machine(base_classes_crans) :
|
||||||
raise RuntimeError(u'Impossible de trouver le réseau où placer la machine.')
|
raise RuntimeError(u'Impossible de trouver le réseau où placer la machine.')
|
||||||
|
|
||||||
if ip=='<automatique>' :
|
if ip=='<automatique>' :
|
||||||
|
pool_ip = [] # Pool d'IP à tester
|
||||||
for ne in net :
|
for ne in net :
|
||||||
ip = ne.split('/')[0]
|
ip = ne.split('/')[0]
|
||||||
ip = ip.split('.')
|
ip = ip.split('.')
|
||||||
|
@ -1728,17 +1731,23 @@ class machine(base_classes_crans) :
|
||||||
else :
|
else :
|
||||||
n[2] += 1
|
n[2] += 1
|
||||||
n[3] = 0
|
n[3] = 0
|
||||||
if n[2]==255 : raise RuntimeError(u'Impossible de trouver une IP libre.')
|
if n[2]==255 : break
|
||||||
ip = "%d.%d.%d.%d" % tuple(n)
|
ip = "%d.%d.%d.%d" % tuple(n)
|
||||||
|
if not iptools.AddrInNet(ip,ne):
|
||||||
|
# On est allé trop loin
|
||||||
|
break
|
||||||
|
pool_ip.append(ip)
|
||||||
|
|
||||||
|
# On va prendre choisir une IP au hasard dans le pool des IP dispo
|
||||||
|
random.shuffle(pool_ip)
|
||||||
|
while len(pool_ip) > 0:
|
||||||
|
ip = pool_ip.pop() # On choisit une IP
|
||||||
if not self.exist('ipHostNumber=%s' % ip) :
|
if not self.exist('ipHostNumber=%s' % ip) :
|
||||||
# On a trouvé la première ip libre
|
# On a trouvé la première ip libre
|
||||||
break
|
break
|
||||||
|
|
||||||
# Test final
|
if ip:
|
||||||
if not iptools.AddrInNet(ip,ne) :
|
# On a trouvé une IP
|
||||||
# Rien dans ce sous réseau
|
|
||||||
ip = ''
|
|
||||||
else :
|
|
||||||
break
|
break
|
||||||
|
|
||||||
if ip =='' :
|
if ip =='' :
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue