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.
		
		
		
		
			
				
					36 lines
				
				890 B
			
		
		
			
		
	
	
					36 lines
				
				890 B
			| 
											4 years ago
										 | 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
 |