Affiche le canal en cours d'une borne.

darcs-hash:20050714083430-d1718-4c6646af2ffda96590971adf916a9511864dc53a.gz
This commit is contained in:
bernat 2005-07-14 10:34:30 +02:00
parent 2675454696
commit 7d3fb9374d

View file

@ -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 """