
pas une adresse de rseau/brodcast, windows ne sait pas la prend (on ne les attribu pesonne) * on ne fait qu'un fois le calcul du pourcentage et du nombre d'ip utiliss darcs-hash:20060508193253-4ec08-2c54dbbca3c957211a11ae7a50b10f68e8a11616.gz
44 lines
1.2 KiB
Python
Executable file
44 lines
1.2 KiB
Python
Executable file
#!/usr/bin/env python
|
|
# -*- coding: iso-8859-15 -*-
|
|
|
|
# Plugin pour visualiser l'utilisation des plages ip
|
|
|
|
import sys
|
|
sys.path.append('/usr/scripts/gestion')
|
|
|
|
from ldap_crans import crans_ldap
|
|
from config import NETs
|
|
from iptools import AddrInNet
|
|
|
|
ips = [ x.ip() for x in crans_ldap().search('ip=*')['machine'] ]
|
|
|
|
try :
|
|
arg = sys.argv[1]
|
|
except :
|
|
arg = ''
|
|
|
|
if arg == "config" :
|
|
print 'host_name adresses-ip'
|
|
print 'graph_title Statistiques adresses IP'
|
|
print 'graph_args --base 1000 --lower-limit 0'
|
|
print 'graph_category network'
|
|
print "graph_vlabel % d'utilisation"
|
|
for subnet in NETs.keys():
|
|
nom = subnet.replace('-', '')
|
|
print "%s.label %s" % (nom, subnet)
|
|
print "%s.warning 92" % nom
|
|
print "%s.critical 98" % nom
|
|
|
|
else :
|
|
for subnet in NETs :
|
|
total = 0
|
|
for net in NETs[subnet]:
|
|
total += 2 ** ( 32 - int( net.split('/')[1] ) )
|
|
# on ne prend pas en compte les adresse .0 et .255
|
|
total = total - int(total/128)
|
|
|
|
utilisees = len( [ ip for ip in ips if AddrInNet( ip, NETs[subnet] ) ] )
|
|
pourcentage = int((utilisees*100)/total)
|
|
|
|
nom = subnet.replace('-', '')
|
|
print "%s.value %d" % (nom, pourcentage)
|