From 1334934947d1ab5abd06774634747c42aca91a14 Mon Sep 17 00:00:00 2001 From: bernat Date: Tue, 19 Oct 2004 10:21:54 +0200 Subject: [PATCH] Pour chaque client, on indique aussi la qualit du signal darcs-hash:20041019082154-d1718-c36bbd002fbdd21ec4dd5c493357def5a1557258.gz --- gestion/whos.py | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/gestion/whos.py b/gestion/whos.py index 5b9de9a3..ab5d3d4a 100755 --- a/gestion/whos.py +++ b/gestion/whos.py @@ -432,14 +432,22 @@ def machine_details(machine) : clients = borne_clients(machine.nom()) if clients: f += coul(u'Clients : \n','gras') - for client in clients: + for (client, rssi) in clients: # On va chercher le nom correspondant à l'adresse MAC res = base.search("mac=%s" % client)['machine'] if not res: client_nom = '????' else: client_nom = ", ".join(["%s [%s]" % (x.nom(), x.proprietaire().Nom()) for x in res]) - f += u'\t%s (%s)\n' % (client, client_nom) + # On va choisir la bonne couleur pour le RSSI + if rssi > -77: + coul_rssi = 'vert' + elif rssi > -90: + coul_rssi = 'jaune' + else: + coul_rssi = 'rouge' + f += u' %s (%s) (RSSI: %s)\n' % (client, client_nom, + coul("%d" % rssi, coul_rssi)) if aff_ipsec and machine.ipsec() : @@ -595,19 +603,22 @@ def borne_etat(borne) : return False def borne_clients(borne) : - """Renvoie la liste des adresses MAC associées à la borne""" + """Renvoie la liste des adresses MAC associées à la borne. + + Chaque adresse MAC est en fait contenue dans un couple comprenant + l'adresse MAC et le RSSI du client associé""" macs = [] # Uniquement possible pour les admins et si on a la clef for clef in ["/etc/wifi/ssh/wifi","/usr/scripts/gestion/clef-wifi"]: if os.path.isfile(clef) and user_tests.isadm(): try: - wl = popen2.Popen3("ssh -o StrictHostKeyChecking=no -i %s root@%s wl assoclist 2> /dev/null" % (clef, - borne)) + wl = popen2.Popen3("ssh -o StrictHostKeyChecking=no -i %s root@%s 'for mac in $(wl assoclist | cut -f 2 -d \" \"); do rssi=$(wl rssi $mac 2> /dev/null | cut -f 3 -d \" \") ; echo $mac $rssi ; done' 2> /dev/null" % (clef, borne)) wl.tochild.close() for line in wl.fromchild.readlines(): # Chaque ligne est de la forme - # assoclist 00:11:22:33:44:55 - macs.append(line.split(" ")[1].strip()) + # 00:11:22:33:44:55 -20 + line = line.split(" ") + macs.append((line[0].strip(), int(line[1].strip()))) except: pass break # Pas la peine d'essayer une autre clef