Есть ли способ, кроме использования airport
утилиты командной строки, программно получить список доступных сетей Wi-Fi (для использования приложением)? Вот контекст:
У меня есть приложение командной строки для управления сетями Wi-Fi ( https://github.com/keithrbennett/wifiwand , gem install wifi-wand
), в котором я получаю список доступных сетей Wi-Fi, используя файлы airport -s
.
К сожалению, поскольку сетевые имена выровнены по правому краю, невозможно определить, содержит ли имя начальные пробелы и сколько их. Существует опция -x для вывода данных в формате XML, но в Ruby для разбора XML обычно требуется установка драгоценного камня nokogiri
, что легендарно проблематично, и я не хочу навязывать это своим пользователям. Поэтому я прохожу этот странный и менее чем на 100% надежный процесс, чтобы вернуть правильные результаты в большинстве, но не во всех случаях.
Каковы мои другие варианты, если таковые имеются, для получения этой информации?
Вы можете (неправильно) использовать awk
для фильтрации результата:
airport -s -x| awk ' { if (catch == 1) { print; catch=0 } }
/SSID_STR/ { catch=1 }'
<string>UPC Wi-Free</string>
<string>UPCE191589</string>
<string>The Cloud</string>
<string>UPCE191589</string>
<string>The Cloud</string>
Не очень красиво, но работает :-)
OTOH, SSID может быть любым, его даже не нужно распечатывать (см. Существует ли стандарт, определяющий, что такое действительный SSID и пароль? ). Таким образом, любая попытка обработки SSID в текстовых утилитах, скорее всего, рано или поздно потерпит неудачу.
Кейт Беннетт
airport -s -x | awk '{ if (catch == 1) { print; catch=0 } } /SSID_STR/ { catch=1 }'
.без холма
Кейт Беннетт
без холма