From 7d3fb9374d860a9e7710c43884560ef379b79928 Mon Sep 17 00:00:00 2001 From: bernat Date: Thu, 14 Jul 2005 10:34:30 +0200 Subject: [PATCH] Affiche le canal en cours d'une borne. darcs-hash:20050714083430-d1718-4c6646af2ffda96590971adf916a9511864dc53a.gz --- gestion/whos.py | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/gestion/whos.py b/gestion/whos.py index d7f2a146..1b975e22 100755 --- a/gestion/whos.py +++ b/gestion/whos.py @@ -443,14 +443,18 @@ def machine_details(machine) : # Borne wifi if machine.puissance() : - f += coul(u'Puissance : ','gras') + machine.puissance() - f += coul(u'\tCanal : ', 'gras') + machine.canal() + f += coul(u'Puissance : ','gras') + u"%4.d" % int(machine.puissance()) + f += coul(u'\tCanaux : ', 'gras') + machine.canal() f += coul(u'\tÉtat : ', 'gras') if borne_etat(machine.nom()): f += coul(u'borne active', 'vert') f += '\n' # S'il y a des clients, on les liste - clients = borne_clients(machine.nom()) + canal_clients = borne_clients_canal(machine.nom()) + clients = canal_clients["mac-rssi"] + canal = canal_clients["canal"] + f += coul(u'\t Canal courant : ', 'gras') + u"%d" % canal + f += "\n" if clients and base: f += coul(u'Clients : \n','gras') for (client, rssi) in clients: @@ -643,27 +647,40 @@ def borne_etat(borne) : except: return False -def borne_clients(borne) : - """Renvoie la liste des adresses MAC associées à la borne. +def borne_clients_canal(borne) : + """Renvoie la liste des adresses MAC associées à la borne ainsi que le canal. Chaque adresse MAC est en fait contenue dans un couple comprenant - l'adresse MAC et le RSSI du client associé""" + l'adresse MAC et le RSSI du client associé. + + On en profite pour renvoyer également le canal en cours de la + borne. On fait cela dans la même fonction car cela évite de faire + deux connexions ssh (ce qui est fort coûteux). + + Au final, on renvoie un dictionnaire + - mac-rssi: une liste de couples (MAC, RSSI) + - canal: le canal en cours + """ macs = [] + canal = -1 # 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 'for mac in $(/usr/sbin/wl assoclist | cut -f 2 -d \" \"); do rssi=$(/usr/sbin/wl rssi $mac 2> /dev/null | cut -f 3 -d \" \") ; echo $mac $rssi ; done' 2> /dev/null" % (clef, borne)) + wl = popen2.Popen3("ssh -o StrictHostKeyChecking=no -i %s root@%s 'for mac in $(/usr/sbin/wl assoclist | cut -f 2 -d \" \"); do rssi=$(/usr/sbin/wl rssi $mac 2> /dev/null | cut -f 3 -d \" \") ; echo $mac $rssi ; done ; echo -n \"CANAL \" ; /usr/sbin/wl channel | grep current' 2> /dev/null" % (clef, borne)) wl.tochild.close() for line in wl.fromchild.readlines(): # Chaque ligne est de la forme # 00:11:22:33:44:55 -20 - line = line.split(" ") - macs.append((line[0].strip(), int(line[1].strip()))) + line = line.strip().split() + if line[0] == "CANAL": + canal = int(line[-1]) + else: + macs.append((line[0].strip(), int(line[1].strip()))) except: pass break # Pas la peine d'essayer une autre clef - return macs + return {"canal": canal, "mac-rssi": macs} def prise_etat(chbre) : """ Retoune l'état de la prise associée à la chbre """