Como obter programaticamente uma lista de SSIDs sem fio ao alcance do NetworkManager

6

Estou escrevendo um pequeno aplicativo que quero enviar para a placa Ubuntu App Review, e uma coisa que eu gostaria de fazer é mostrar os nomes dos SSIDs sem fio detectados em uma caixa de combinação. É um aplicativo PyGI.

Alguém tem alguma indicação sobre como eu posso obter esses SSIDs do sistema, de preferência através de uma API do Python? De dbus? Do NetworkManager?

    
por David Planella 16.05.2012 / 16:14

2 respostas

13

Você pode fazer isso facilmente a partir das ligações pygi do 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 diretamente do DBus, veja link

Se você está inclinado a simplesmente roteirizar isso no shell; Uma maneira fácil de perguntar ao NetworkManager é usar:

nmcli dev wifi list

Ou use iwlist scan , ou melhor: iw dev wlan0 scan (ou ... scan dump ), depois de instalar o iw package.

    
por Mathieu Trudel-Lapierre 16.05.2012 / 16:25
2

Uma opção é executar iwlist scan na linha de comando, mas ela precisa ser executada como root

    
por mhall119 16.05.2012 / 16:17