6

I'm writing a small little app that I want to submit to the Ubuntu App Review board, and one thing I'd like to do is for it to show the names of the detected Wireless SSIDs in a combo box. It's a PyGI app.

Has anyone got any pointers on how I can get those SSIDs from the system, preferably through a Python API? From dbus? From NetworkManager?

2 Answers2

13

You can do this easily from NetworkManager's pygi bindings:

from gi.repository import NetworkManager, NMClient

nmc = NMClient.Client.new()
devs = nmc.get_devices()

for dev in devs:
    if dev.get_device_type() == NetworkManager.DeviceType.WIFI:
        for ap in dev.get_access_points():
            print ap.get_ssid()

Or from DBus directly, see http://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/examples/python/show-bssids.py

If you're inclined to just quickly script this in shell; an easy way to ask NetworkManager for this is to use:

nmcli dev wifi list

Or use iwlist scan, or better: iw dev wlan0 scan (or ... scan dump), after installing the iw Install iw package.

3

One option is to run iwlist scan on the command line, but it has to be run as root

stephenmyall
  • 9,885
mhall119
  • 5,037