| #!/usr/bin/python |
| # |
| # Test script for wpaspy |
| # Copyright (c) 2013, Jouni Malinen <j@w1.fi> |
| # |
| # This software may be distributed under the terms of the BSD license. |
| # See README for more details. |
| |
| import os |
| import sys |
| import time |
| import wpaspy |
| |
| wpas_ctrl = '/var/run/wpa_supplicant' |
| |
| def wpas_connect(host=None, port=9877): |
| ifaces = [] |
| |
| if host != None: |
| try: |
| wpas = wpaspy.Ctrl(host, port) |
| return wpas |
| except: |
| print("Could not connect to host: ", host) |
| return None |
| |
| if os.path.isdir(wpas_ctrl): |
| try: |
| ifaces = [os.path.join(wpas_ctrl, i) for i in os.listdir(wpas_ctrl)] |
| except OSError as error: |
| print("Could not find wpa_supplicant: ", error) |
| return None |
| |
| if len(ifaces) < 1: |
| print("No wpa_supplicant control interface found") |
| return None |
| |
| for ctrl in ifaces: |
| try: |
| wpas = wpaspy.Ctrl(ctrl) |
| return wpas |
| except Exception as e: |
| pass |
| return None |
| |
| |
| def main(host=None, port=9877): |
| print("Testing wpa_supplicant control interface connection") |
| wpas = wpas_connect(host, port) |
| if wpas is None: |
| return |
| print("Connected to wpa_supplicant") |
| print(wpas.request('PING')) |
| |
| mon = wpas_connect(host, port) |
| if mon is None: |
| print("Could not open event monitor connection") |
| return |
| |
| mon.attach() |
| print("Scan") |
| print(wpas.request('SCAN')) |
| |
| count = 0 |
| while count < 10: |
| count += 1 |
| time.sleep(1) |
| while mon.pending(): |
| ev = mon.recv() |
| print(ev) |
| if 'CTRL-EVENT-SCAN-RESULTS' in ev: |
| print('Scan completed') |
| print(wpas.request('SCAN_RESULTS')) |
| count = 10 |
| pass |
| |
| |
| if __name__ == "__main__": |
| if len(sys.argv) > 2: |
| main(host=sys.argv[1], port=int(sys.argv[2])) |
| else: |
| main() |