diff options
Diffstat (limited to 'contrib/wpa/wpaspy/test.py')
-rwxr-xr-x | contrib/wpa/wpaspy/test.py | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/contrib/wpa/wpaspy/test.py b/contrib/wpa/wpaspy/test.py new file mode 100755 index 000000000000..5e18fb23f744 --- /dev/null +++ b/contrib/wpa/wpaspy/test.py @@ -0,0 +1,82 @@ +#!/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() |