You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							35 lines
						
					
					
						
							890 B
						
					
					
				
			
		
		
	
	
							35 lines
						
					
					
						
							890 B
						
					
					
				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
 | 
						|
 |