1#!/usr/bin/python 2# 3# Test script for wpaspy 4# Copyright (c) 2013, Jouni Malinen <j@w1.fi> 5# 6# This software may be distributed under the terms of the BSD license. 7# See README for more details. 8 9import os 10import sys 11import time 12import wpaspy 13 14wpas_ctrl = '/var/run/wpa_supplicant' 15 16def wpas_connect(host=None, port=9877): 17 ifaces = [] 18 19 if host != None: 20 try: 21 wpas = wpaspy.Ctrl(host, port) 22 return wpas 23 except: 24 print("Could not connect to host: ", host) 25 return None 26 27 if os.path.isdir(wpas_ctrl): 28 try: 29 ifaces = [os.path.join(wpas_ctrl, i) for i in os.listdir(wpas_ctrl)] 30 except OSError as error: 31 print("Could not find wpa_supplicant: ", error) 32 return None 33 34 if len(ifaces) < 1: 35 print("No wpa_supplicant control interface found") 36 return None 37 38 for ctrl in ifaces: 39 try: 40 wpas = wpaspy.Ctrl(ctrl) 41 return wpas 42 except Exception as e: 43 pass 44 return None 45 46 47def main(host=None, port=9877): 48 print("Testing wpa_supplicant control interface connection") 49 wpas = wpas_connect(host, port) 50 if wpas is None: 51 return 52 print("Connected to wpa_supplicant") 53 print(wpas.request('PING')) 54 55 mon = wpas_connect(host, port) 56 if mon is None: 57 print("Could not open event monitor connection") 58 return 59 60 mon.attach() 61 print("Scan") 62 print(wpas.request('SCAN')) 63 64 count = 0 65 while count < 10: 66 count += 1 67 time.sleep(1) 68 while mon.pending(): 69 ev = mon.recv() 70 print(ev) 71 if 'CTRL-EVENT-SCAN-RESULTS' in ev: 72 print('Scan completed') 73 print(wpas.request('SCAN_RESULTS')) 74 count = 10 75 pass 76 77 78if __name__ == "__main__": 79 if len(sys.argv) > 2: 80 main(host=sys.argv[1], port=int(sys.argv[2])) 81 else: 82 main() 83