[whokfet] correction prise+restructuration

Parce que j'envisage d'en faire un plugin munin, et de factoriser le code
avec who2b.
This commit is contained in:
Daniel STAN 2013-03-12 20:59:47 +01:00
parent a2d0eaf5ea
commit 3c9d8634be

View file

@ -19,41 +19,54 @@ from os import system
import xml.dom.minidom import xml.dom.minidom
def get_wifi_connected_client(host): def get_wifi_connected_client(host):
u""" Renvoie la liste des clients, pour une borne wifi donnée.
N'est plus vraiment utilisée car les bornes sont de toutes façon
connectées au switch (backbone en fait)"""
f = open('/usr/scripts/var/wifi_xml/%s.xml' % host,'r') f = open('/usr/scripts/var/wifi_xml/%s.xml' % host,'r')
doc = xml.dom.minidom.parse(f) doc = xml.dom.minidom.parse(f)
f.close() f.close()
return [ mac.firstChild.nodeValue for mac in doc.getElementsByTagName('mac') ] return [ mac.firstChild.nodeValue for mac in doc.getElementsByTagName('mac') ]
def liste_kfet(): def get_state():
sw = hpswitch('backbone.adm.crans.org') sw = hpswitch('backbone.adm.crans.org')
db = crans_ldap() db = crans_ldap()
res = {'machines': [],
'machines_crans': [],
'unknown': [],
'ttyfound': 0,
}
try: try:
macs = sw.show_prise_mac(45) #Devine quoi, c'est la prise de la kfet macs = sw.show_prise_mac(21) #Devine quoi, c'est la prise de la kfet
macs +=get_wifi_connected_client('diomede')
macs +=get_wifi_connected_client('nanom5')
except ConversationError: except ConversationError:
cprint("Impossible de communiquer avec le switch !", 'rouge') cprint("Impossible de communiquer avec le switch !", 'rouge')
return return
if macs: if macs:
machines = []
machines_crans = []
for mac in macs: for mac in macs:
fm = db.search("mac=%s" % mac) fm = db.search("mac=%s" % mac)
if fm['machine']: if fm['machine']:
m = fm['machine'][0] m = fm['machine'][0]
if not fm['machineCrans'] and hasattr(m.proprietaire(),'droits') and m.proprietaire().droits(): if not fm['machineCrans'] and hasattr(m.proprietaire(),'droits') and m.proprietaire().droits():
# On filtre ceux qui ont des droits et qui sont pas des machines crans # On filtre ceux qui ont des droits et qui sont pas des machines crans
machines.append(m) res['machines'].append(m)
else: else:
cprint("Machine inconnue: %s" % mac, 'rouge') res['unknown'].append(mac)
return res
def summary(current):
u"""Réalise un joli aperçu de l'état donné en paramètre."""
if current['machines']:
cprint('---=== Machines des membres actifs ===---', 'bleu') cprint('---=== Machines des membres actifs ===---', 'bleu')
aff(machines) aff(current['machines'])
ttyfound = 1
print ''
if len(machines) != 0 or ttyfound == 0:
cprint("---=== Il y a du monde à la Kfet ! ===---", 'vert') cprint("---=== Il y a du monde à la Kfet ! ===---", 'vert')
else: else:
cprint("---=== Il semble n'y avoir personne à la Kfet ... ===---", 'rouge') cprint("---=== Il semble n'y avoir personne à la Kfet ... ===---", 'rouge')
for mac in current['unknown']:
cprint("Machine inconnue: %s" % mac, 'rouge')
def munin(current):
"""S'occupe de l'affichage pour munin. TODO: l'écrire."""
pass
if __name__ == '__main__': if __name__ == '__main__':
liste_kfet() state = get_state()
summary(state)