¿Cómo obtener mediante programación las redes wifi disponibles sin servicio de aeropuerto?

4

¿Hay alguna otra forma que no sea usar la utilidad de línea de comando airport para obtener la lista de redes wifi disponibles mediante programación (para el consumo de una aplicación)? Aquí está el contexto:

Tengo una aplicación de línea de comandos para administrar redes wifi ( enlace , gem install wifi-wand ) en la que tengo la lista de disponibles redes wifi que utilizan airport -s .

Desafortunadamente, debido a que los nombres de red se presentan alineados correctamente, no hay manera de determinar si los espacios iniciales contienen o no, o cuántos. Existe una opción -x para generar los datos en formato XML, pero en Ruby, el análisis de XML generalmente requiere la instalación de la gema nokogiri , que es legendariamente problemática, y no quiero imponer eso a mis usuarios. Así que paso por este proceso extraño y menos del 100% confiable para devolver los resultados correctos en la mayoría de los casos, pero no en todos.

¿Cuáles son mis otras opciones, si las hay, para obtener esta información?

    
pregunta Keith Bennett 25.03.2018 - 13:18

1 respuesta

4

Puedes (mal) usar awk para filtrar el resultado:

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>

No es muy bueno, pero cumple su función :-)

OTOH, un SSID puede ser cualquier cosa, ni siquiera tiene que ser imprimible (consulte ¿Existe algún estándar que defina qué es un SSID y una contraseña válidos? ). Por lo tanto, cualquier intento de manejar SSID en utilidades basadas en texto probablemente fallará tarde o temprano.

    
respondido por el nohillside 25.03.2018 - 13:43

Lea otras preguntas en las etiquetas