[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:
parent
a2d0eaf5ea
commit
3c9d8634be
1 changed files with 26 additions and 13 deletions
|
@ -19,41 +19,54 @@ from os import system
|
|||
import xml.dom.minidom
|
||||
|
||||
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')
|
||||
doc = xml.dom.minidom.parse(f)
|
||||
f.close()
|
||||
return [ mac.firstChild.nodeValue for mac in doc.getElementsByTagName('mac') ]
|
||||
|
||||
def liste_kfet():
|
||||
def get_state():
|
||||
sw = hpswitch('backbone.adm.crans.org')
|
||||
db = crans_ldap()
|
||||
res = {'machines': [],
|
||||
'machines_crans': [],
|
||||
'unknown': [],
|
||||
'ttyfound': 0,
|
||||
}
|
||||
try:
|
||||
macs = sw.show_prise_mac(45) #Devine quoi, c'est la prise de la kfet
|
||||
macs +=get_wifi_connected_client('diomede')
|
||||
macs +=get_wifi_connected_client('nanom5')
|
||||
macs = sw.show_prise_mac(21) #Devine quoi, c'est la prise de la kfet
|
||||
except ConversationError:
|
||||
cprint("Impossible de communiquer avec le switch !", 'rouge')
|
||||
return
|
||||
if macs:
|
||||
machines = []
|
||||
machines_crans = []
|
||||
for mac in macs:
|
||||
fm = db.search("mac=%s" % mac)
|
||||
if fm['machine']:
|
||||
m = fm['machine'][0]
|
||||
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
|
||||
machines.append(m)
|
||||
res['machines'].append(m)
|
||||
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')
|
||||
aff(machines)
|
||||
ttyfound = 1
|
||||
print ''
|
||||
if len(machines) != 0 or ttyfound == 0:
|
||||
aff(current['machines'])
|
||||
cprint("---=== Il y a du monde à la Kfet ! ===---", 'vert')
|
||||
else:
|
||||
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__':
|
||||
liste_kfet()
|
||||
state = get_state()
|
||||
summary(state)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue