Affiche le canal en cours d'une borne.
darcs-hash:20050714083430-d1718-4c6646af2ffda96590971adf916a9511864dc53a.gz
This commit is contained in:
parent
2675454696
commit
7d3fb9374d
1 changed files with 27 additions and 10 deletions
|
@ -443,14 +443,18 @@ def machine_details(machine) :
|
||||||
|
|
||||||
# Borne wifi
|
# Borne wifi
|
||||||
if machine.puissance() :
|
if machine.puissance() :
|
||||||
f += coul(u'Puissance : ','gras') + machine.puissance()
|
f += coul(u'Puissance : ','gras') + u"%4.d" % int(machine.puissance())
|
||||||
f += coul(u'\tCanal : ', 'gras') + machine.canal()
|
f += coul(u'\tCanaux : ', 'gras') + machine.canal()
|
||||||
f += coul(u'\tÉtat : ', 'gras')
|
f += coul(u'\tÉtat : ', 'gras')
|
||||||
if borne_etat(machine.nom()):
|
if borne_etat(machine.nom()):
|
||||||
f += coul(u'borne active', 'vert')
|
f += coul(u'borne active', 'vert')
|
||||||
f += '\n'
|
f += '\n'
|
||||||
# S'il y a des clients, on les liste
|
# 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:
|
if clients and base:
|
||||||
f += coul(u'Clients : \n','gras')
|
f += coul(u'Clients : \n','gras')
|
||||||
for (client, rssi) in clients:
|
for (client, rssi) in clients:
|
||||||
|
@ -643,27 +647,40 @@ def borne_etat(borne) :
|
||||||
except:
|
except:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def borne_clients(borne) :
|
def borne_clients_canal(borne) :
|
||||||
"""Renvoie la liste des adresses MAC associées à la 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
|
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 = []
|
macs = []
|
||||||
|
canal = -1
|
||||||
# Uniquement possible pour les admins et si on a la clef
|
# Uniquement possible pour les admins et si on a la clef
|
||||||
for clef in ["/etc/wifi/ssh/wifi","/usr/scripts/gestion/clef-wifi"]:
|
for clef in ["/etc/wifi/ssh/wifi","/usr/scripts/gestion/clef-wifi"]:
|
||||||
if os.path.isfile(clef) and user_tests.isadm():
|
if os.path.isfile(clef) and user_tests.isadm():
|
||||||
try:
|
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()
|
wl.tochild.close()
|
||||||
for line in wl.fromchild.readlines():
|
for line in wl.fromchild.readlines():
|
||||||
# Chaque ligne est de la forme
|
# Chaque ligne est de la forme
|
||||||
# 00:11:22:33:44:55 -20
|
# 00:11:22:33:44:55 -20
|
||||||
line = line.split(" ")
|
line = line.strip().split()
|
||||||
|
if line[0] == "CANAL":
|
||||||
|
canal = int(line[-1])
|
||||||
|
else:
|
||||||
macs.append((line[0].strip(), int(line[1].strip())))
|
macs.append((line[0].strip(), int(line[1].strip())))
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
break # Pas la peine d'essayer une autre clef
|
break # Pas la peine d'essayer une autre clef
|
||||||
return macs
|
return {"canal": canal, "mac-rssi": macs}
|
||||||
|
|
||||||
def prise_etat(chbre) :
|
def prise_etat(chbre) :
|
||||||
""" Retoune l'état de la prise associée à la chbre """
|
""" Retoune l'état de la prise associée à la chbre """
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue