web-dev-qa-db-fra.com

Comment obtenir par programme une liste de SSID sans fil dans la plage à partir de NetworkManager

J'écris une petite petite application que je souhaite soumettre au tableau Ubuntu App Review, et j'aimerais, entre autres choses, afficher les noms des SSID sans fil détectés dans une liste déroulante. C'est une application PyGI.

Quelqu'un at-il des indications sur la manière dont je peux obtenir ces SSID auprès du système, de préférence via une API Python? De dbus? De NetworkManager?

6
David Planella

Vous pouvez le faire facilement à partir des liaisons pygi de NetworkManager:

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()

Ou directement de DBus, voir http://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/examples/python/show-bssids.py

Si vous êtes enclin à écrire rapidement ceci dans Shell; un moyen simple de demander cela à NetworkManager consiste à utiliser:

nmcli dev wifi list

Ou utilisez iwlist scan , ou mieux: iw dev wlan0 scan (ou ... scan dump ), après avoir installé le iwInstall iw package.

Une option consiste à exécuter iwlist scan sur la ligne de commande, mais il doit être exécuté en tant que racine

2
mhall119