3 votos

¿Cómo obtener programáticamente las redes wifi disponibles sin la utilidad del aeropuerto?

¿Existe alguna otra forma que no sea utilizar el airport ¿Utilidad de línea de comandos para obtener la lista de redes wifi disponibles de forma programática (para su consumo por una aplicación)? Este es el contexto:

Tengo una aplicación de línea de comandos para gestionar redes wifi ( https://github.com/keithrbennett/wifiwand , gem install wifi-wand ) en el que obtengo la lista de redes wifi disponibles utilizando airport -s .

Lamentablemente, como los nombres de las redes se presentan alineados a la derecha, no hay forma de determinar si el nombre contiene o no espacios iniciales, ni cuántos. Existe una opción -x para obtener los datos en formato XML, pero en Ruby, el análisis de XML suele requerir la instalación del programa nokogiri que es legendariamente problemático, y no quiero imponerlo a mis usuarios. Así que paso por este proceso extraño y menos que 100% fiable para devolver los resultados correctos en la mayoría de los casos, pero no en todos.

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

4voto

Podría utilizar (mal) 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 bonito, pero cumple su función :-)

Por otra parte, un SSID puede ser cualquier cosa, ni siquiera tiene que ser imprimible (véase ¿Existe una norma que defina qué es un SSID y una contraseña válidos? ). Así que cualquier intento de manejar el SSID en las utilidades basadas en texto probablemente fallará tarde o temprano.

0 votos

Gracias, ¡esto es genial! ¿Hay alguna razón para todo el espacio en blanco en el comando? Lo he quitado y parece que funciona bien: airport -s -x | awk '{ if (catch == 1) { print; catch=0 } } /SSID_STR/ { catch=1 }' .

0 votos

@KeithBennett Ninguna razón técnica, simplemente es más fácil de leer (al menos para mí). El ordenamiento es importante sin embargo, no puedes cambiar las dos líneas.

0 votos

Gracias. Me gustaría darle la atribución en el código fuente. ¿Estaría bien, y si es así, cómo? (¿manejo de Twitter, etc.?)

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X