Two methods to scan for wireless networks. One requires sudo/root, the other requires Network Manager.
#! /usr/bin/env python
"""This python 2.5 script uses iwlist to scan for nearby wireless networks. It must be run as sudo/root to work."""
import subprocess as SU
command = ['iwlist', 'eth1', 'scan']
output = SU.Popen(command, stdout=SU.PIPE).stdout.readlines()
data = []
for item in output:
print item.strip()
if item.strip().startswith('ESSID:'):
data.append(item.lstrip(' ESSID:"').rstrip('"\n'))
if item.strip().startswith('Quality'):
data.append(int(item.split()[0].lstrip(' Quality=').rstrip('/100 ')))
if item.strip().startswith('Encryption key:off'): data.append('OPEN')
if item.strip().startswith('Encryption key:on'): data.append('encrypted')
print data
#! /usr/bin/env python
"""This python 2.5 script uses dbus to query Network Manager, which scans regularly for wireless networks. It does NOT require root/sudo."""
import dbus
item = 'org.freedesktop.NetworkManager'
path = '/org/freedesktop/NetworkManager/Devices/eth1'
interface = item + '.Device'
bus = dbus.SystemBus()
data = []
wireless = dbus.Interface(bus.get_object(item, path), interface)
for network_path in wireless.getNetworks():
network = dbus.Interface(bus.get_object(item, network_path), interface)
data.append(network.getName()) # also network.getProperties[1]
data.append(network.getStrength()) # also network.getProperties[3]
if network.getEncrypted(): data.append('encrypted')
else: data.append('OPEN')
print data
No comments:
Post a Comment