diff --git a/wifi/bornes.py b/wifi/bornes.py index 3a213960..eb2176b0 100755 --- a/wifi/bornes.py +++ b/wifi/bornes.py @@ -16,7 +16,6 @@ from optparse import OptionParser LOG = "/var/log/wifi/wifi.log" DELTA = 60*60 - def bornes(): """Renvoie la liste des bornes @@ -38,7 +37,7 @@ def bornes(): def ssh_exec(host, cmd): """Execute une commande en ssh sur une machine et renvoie le résultat""" - (stdin, stdout, stderr) = os.popen3("ssh -T -x -o BatchMode=yes -o ConnectTimeout=5 -o StrictHostKeyChecking=no %(host)s %(cmd)s" % locals()) + (stdin, stdout, stderr) = os.popen3("ssh -T -x -o BatchMode=yes -o ConnectTimeout=5 -o StrictHostKeyChecking=no -l root -i /usr/scripts/gestion/clef-wifi %(host)s %(cmd)s" % locals()) stdin.close() stderr.close() return stdout @@ -47,22 +46,21 @@ def bornes_canal(): names = bornes() outputs = {} for name in names: - outputs[name] = ssh_exec(name+".wifi", 'iwlist wl0 channel') + outputs[name] = ssh_exec(name+".wifi", '/usr/sbin/iwlist wlan0 channel') - count = 0 - total = len(names) - while count < total: + while True: try: os.wait() except OSError: break # On lit tout les résultats: results = {} for name, output in outputs.iteritems(): - curoutput = output.read().strip() - if 'Current Channel' in curoutput: - results[name] = curoutput.split(':')[-1].strip() - else: - results[name] = None + results[name] = None + for l in output.readlines(): + m = re.match('\s*Current(.*)\\(Channel ([0-9]*)\\)',l) + if m: + results[name] = m.group(2) + break output.close() return results @@ -71,21 +69,18 @@ def bornes_clients(): names = bornes() outputs = {} for name in names: - outputs[name] = ssh_exec(name+".wifi", 'brctl showmacs br-crans') + outputs[name] = ssh_exec(name+".wifi", '/usr/sbin/iw dev wlan0 station dump') - count = 0 - total = len(names) - while count < total: +# count = 0 +# total = len(names) + while True: try: os.wait() except OSError: break # On lit tout les résultats: results = {} for name, output in outputs.iteritems(): - lines = output.readlines() - if lines: - macs = map(lambda x: x.split(), lines) - results[name] = str(len([x for x in macs if x[0] == '2' and x[2] != 'yes'])) + results[name] = str(len([1 for line in output.readlines() if line.startswith('Station')])) output.close() return results