scripts/gestion/numeros_disponibles.py
bos 196b7735c8 Un petit hack de rien du tout
darcs-hash:20070831070914-c992d-706297dbbc667e91d8a2efdd44909a2ce7fb6c64.gz
2007-08-31 09:09:14 +02:00

85 lines
2.1 KiB
Python
Executable file

#! /usr/bin/env python
# -*- coding: iso-8859-15 -*-
"""
Mise a jour periodique des listes d'ip et d'id disponibles.
Copyright (C) Alexandre Bos, largement pompe sur ldap_crans.py
Licence : GPLv2
"""
from config import NETs
from iptools import AddrInNet
repertoire = '/usr/scripts/var/numeros_disponibles/'
"""
Un petit hack de rien du tout pour s'assurer qu'on n'attribue
pas ces adresses. Certains services risquent de continuer
d'essayer de se connecter a ces adresses
"""
ancien_vlan_adm = ['138.231.144.0/24']
def lister_ip_dispo(plage):
f = open(repertoire + 'ip_' + plage)
lignes = f.readlines()
liste = []
for l in lignes:
liste.append(l.strip())
return liste
def lister_ip_utilisees():
liste = []
from ldap_crans import crans_ldap
db = crans_ldap()
r = db.search('mid=*')
machines = r['machineFixe'] + r['machineWifi'] + r['machineCrans'] + r['borneWifi']
for m in machines:
liste.append(m.ip())
return liste
def update_ip(plage, occupees):
net = NETs[plage]
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 AddrInNet(ip, ne):
# On est allé trop loin
break
pool_ip.append(ip)
resultat = ''
for ip in pool_ip:
if ip not in occupees :
if not AddrInNet(ip, ancien_vlan_adm):
resultat += '%s\n' % ip
f = open(repertoire + 'ip_' + plage,'w')
f.write(resultat)
f.close
def update_ip_fixe(occupees):
update_ip('fil', 'ip_fil', occupees)
def update_ip_wifi_adh(occupees):
update_ip('wifi-adh','ip_wifi-adh', occupees)
if __name__ == "__main__":
ip_occupees = lister_ip_utilisees()
for net in NETs.keys():
update_ip(net, ip_occupees)