import subprocess def scan(interface="wlan0"): result = [] try: r = subprocess.check_output(["iwlist", interface, "scan"], encoding='utf8') mac = None for line in r.split('\n'): if "Address" in line: # Based on the adapter eithere a percentage or dBm is returned # Add previous network in case no dBm signal level was seen if mac is not None: result.append({"mac": mac}) mac = None mac = line.split(' ')[-1] elif "dBm" in line: try: level = line.split('Signal level=')[1] rss = int(level.split(' ')[0]) result.append({"mac": mac, "rss": rss}) mac = None except ValueError: continue # Add last network if no dBm was found if mac is not None: result.append({"mac": mac}) return result except Exception: return None