Come ottenere a livello di programmazione reti wifi disponibili senza utilità di aeroporto?

4

C'è un modo diverso dall'usare l'utilità della riga di comando airport per ottenere l'elenco delle reti wifi disponibili a livello di programmazione (per il consumo da parte di un'applicazione)? Ecco il contesto:

Ho un'applicazione a riga di comando per la gestione delle reti wifi ( link , gem install wifi-wand ) in cui viene visualizzato l'elenco di reti wifi che utilizzano airport -s .

Sfortunatamente, poiché i nomi di rete sono presentati allineati correttamente, non c'è modo di determinare se o meno, o quanti, spazi iniziali il nome contenga. Esiste un'opzione -x per l'output dei dati in formato XML, ma in Ruby, l'analisi di XML richiede in genere l'installazione di nokogiri gem, che è leggendariamente problematico e non voglio imporlo ai miei utenti. Quindi passo attraverso questo processo strano e meno del 100% affidabile per restituire i risultati corretti nella maggior parte ma non in tutti i casi.

Quali sono le altre mie opzioni, se ce ne sono, per ottenere queste informazioni?

    
posta Keith Bennett 25.03.2018 - 13:18
fonte

1 risposta

4

Potresti (errare) usare awk per filtrare il risultato:

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>

Non molto bello, ma fa il lavoro: -)

OTOH, un SSID può essere qualsiasi cosa, non ha nemmeno bisogno di essere stampabile (vedi C'è uno standard che definisce cos'è un SSID e una password validi? ). Quindi qualsiasi tentativo di gestire SSID in utility testuali probabilmente fallirà prima o poi.

    
risposta data 25.03.2018 - 13:43
fonte

Leggi altre domande sui tag