Linux -OpenWrt- (Unwired One) Ошибка сканирования интерфейса Python WLAN

То, чего я пытаюсь достичь, я хочу, чтобы мое приложение для Android получало список всех доступных подключений WLAN в пределах диапазона устройства с WLAN (в этот момент устройство является точкой доступа). Тогда я хочу сказать, что устройство к какой сети подключиться. Все идет нормально.

Я пытаюсь получить доступ к модулю WLAN на моем устройстве openwert через Python. Я использую этот [1] модуль Python. Когда я выполняю следующий пример кода

python iwlist.py wlan0 scanning

я понял ошибку

Interface does not support scanning

Затем я начал копаться в коде, и настоящее сообщение об ошибке таково:

Argument list too long

и эта ошибка исходит из модуля (из файла iwlibs.py). Точный фрагмент кода (класс Iwrange, update()), откуда он поступает:

buff, s = iwstruct.pack_wrq(640)
print "Now comes the error"
status, result = iwstruct.iw_get_ext(self.ifname,
                                    pythonwifi.flags.SIOCGIWRANGE,
                                    data=s)

Я не знаю, поможет ли это, но я также проверил переменную buff, и она просто говорит 0x00 (я думаю, что должно быть что-то еще, bcz указывает на некоторый адрес в памяти, но, конечно, я тоже могу ошибаться и буфер просто инициализируется там).

Итак, я не уверен, в чем проблема, может быть, мне кажется, что пространство резервирования (или буфер?) Слишком мало для возвращаемого материала. Кто-нибудь знает, что еще я мог бы попробовать, чтобы заставить это работать?

И еще одна вещь, я также скачал wireless_tools и теперь я могу использовать iwlist. Я также могу сканировать и получать список всех окружающих сетей WLAN. Таким образом, кажется, что аппаратное обеспечение работает нормально, я просто не получаю к нему доступ с помощью Python

[1] https://pypi.python.org/pypi/python-wifi/0.6.1

1 ответ

Решение

Так же, как информация, я решил свою проблему, изменив модуль, который я использовал. Сейчас я использую [1]. Когда я выполняю этот код

from wifi import Cell, Scheme
print "%s" %(Cell.all('wlan0'))

Я получаю список со всеми окружающими сетями. Затем мне нужно просто выбрать один из них (по SSID) и установить соединение

[1] https://wifi.readthedocs.io/en/latest/

Другие вопросы по тегам