Utilisation des listes d'ip precalculees
darcs-hash:20070521191029-c992d-736403ea227de4e2bf2862d42bac5fb76cd996a9.gz
This commit is contained in:
parent
ddf12f6a1a
commit
826beec2e9
1 changed files with 5 additions and 20 deletions
|
@ -18,6 +18,7 @@ from chgpass import chgpass
|
||||||
from affich_tools import coul, prompt, cprint
|
from affich_tools import coul, prompt, cprint
|
||||||
from email_tools import send_email
|
from email_tools import send_email
|
||||||
from syslog import *
|
from syslog import *
|
||||||
|
from numeros_disponibles import lister_ip_dispo
|
||||||
|
|
||||||
date_format = '%d/%m/%Y %H:%M'
|
date_format = '%d/%m/%Y %H:%M'
|
||||||
hostname = gethostname().split(".")[0]
|
hostname = gethostname().split(".")[0]
|
||||||
|
@ -2668,37 +2669,21 @@ class Machine(BaseClasseCrans):
|
||||||
# Dans quel réseau la machine doit-elle être placée ?
|
# Dans quel réseau la machine doit-elle être placée ?
|
||||||
if isinstance(self, MachineWifi):
|
if isinstance(self, MachineWifi):
|
||||||
net = config.NETs['wifi-adh']
|
net = config.NETs['wifi-adh']
|
||||||
|
pool_ip = lister_ip_dispo('wifi-adh')
|
||||||
elif isinstance(self, BorneWifi):
|
elif isinstance(self, BorneWifi):
|
||||||
net = config.NETs['bornes']
|
net = config.NETs['bornes']
|
||||||
|
pool_ip = lister_ip_dispo('bornes')
|
||||||
elif isinstance(self.proprietaire(), AssociationCrans):
|
elif isinstance(self.proprietaire(), AssociationCrans):
|
||||||
net = [ '0.0.0.0/0' ]
|
net = [ '0.0.0.0/0' ]
|
||||||
|
pool_ip = lister_ip_dispo('all')
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
net = config.NETs[self.proprietaire().chbre()[0].lower()]
|
net = config.NETs[self.proprietaire().chbre()[0].lower()]
|
||||||
|
pool_ip = lister_ip_dispo(self.proprietaire().chbre()[0].lower())
|
||||||
except:
|
except:
|
||||||
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:
|
|
||||||
ip = ne.split('/')[0]
|
|
||||||
ip = ip.split('.')
|
|
||||||
n = []
|
|
||||||
for i in ip:
|
|
||||||
n.append(int(i))
|
|
||||||
while 1:
|
|
||||||
if n[3] < 255:
|
|
||||||
n[3] += 1
|
|
||||||
else:
|
|
||||||
n[2] += 1
|
|
||||||
n[3] = 0
|
|
||||||
if n[2] == 255: break
|
|
||||||
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
|
# On va prendre choisir une IP au hasard dans le pool des IP dispo
|
||||||
random.shuffle(pool_ip)
|
random.shuffle(pool_ip)
|
||||||
while len(pool_ip) > 0:
|
while len(pool_ip) > 0:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue