airport -s -x restituisce l'output troncato

0

Sono l'autore di wifi-wand , un'utilità della riga di comando Ruby che può essere utilizzata come un modo semplice per gestire il WiFi del Mac ( link ) senza dover imparare tutti i diversi comandi di Mac OS sottostanti e le loro opzioni.

Per ottenere un elenco di nomi di rete, usavo airport -s ma ho scoperto che non funziona perché poiché i nomi di rete sono giustificati a destra (a sinistra), non c'è modo di sapere se gli spazi iniziali fanno parte di il nome o solo lì per la formattazione. Quindi uso airport -s -x per ottenere le informazioni visualizzate in (pseudo-) XML.

Funziona quasi sempre, ma ho notato in diverse posizioni, se c'è una rete di stampanti HP, l'uscita termina da qualche parte in quell'elemento. Ad esempio:

           <key>SSID_STR</key>
           <string>DIRECT-0E-HP OfficeJet 4650</string>
           <key>WPS_PROB_RESP_IE</key>
            <dict>
                    <key>IE_KEY_WPS_AP_SETUP_LOCKED</key>
                    <true/>
                    <key>IE_KEY_WPS_CFG_METHODS</key>
                    <integer>0</integer>
                    <key>IE_KEY_WPS_DEV_NAME</key>
                    <string>DIRECT-0E-HP OfficeJet 4650</string>
                    <key>IE_KEY_WPS_DEV_NAME_DATA</key>
                    <data>
                    RElSRUNULTBFLUhQIE9mZmljZUpldCA0NjUw
                    </data>
                    <key>IE_KEY_WPS_MANUFACTURER</key>
                    <string>HP</string>
                    <key>IE_KEY_WPS_MODEL_NAME</key>
                    <string>OfficeJet 4650 series

Senza l'opzione -x , l'output funziona, ma, come ho detto, c'è il problema dello spazio che mi impedisce di fare affidamento su di esso:

                        SSID BSSID             RSSI CHANNEL HT CC SECURITY (auth/unicast/group)
                NETGEAR25-5G a0:04:60:1a:5a:89 -67  153,-1  Y  -- WPA2(PSK/AES/AES) 
 DIRECT-0E-HP OfficeJet 4650 ac:e2:d3:a9:d9:0f -90  6       Y  -- WPA2(PSK/AES/AES) 
                      iPhone b2:8d:6c:9f:dd:00 -49  1       Y  US WPA2(PSK/AES/AES) 
                   NETGEAR25 a0:04:60:1a:5a:87 -62  9       Y  -- WPA2(PSK/AES/AES) 
                   CBCI-4F58 60:3d:26:57:4f:5c -86  6       Y  -- WPA2(PSK/AES/AES) 

Che cosa sta succedendo e come posso risolvere questo problema? Grazie in anticipo.

(Il problema Github è al link .)

Questo errore relativo a HP è confermato all'indirizzo link , che dice:

Quando si esegue l'aeroporto con il flag --xml, il comando non restituisce dati xml formattati correttamente ... l'idea è che le stampanti HP trasmettano un SSID con caratteri non sicuri ...

[che è vicino, ma è il nome del modello, non il SSID, che sembra generare l'errore]

    
posta Keith Bennett 02.11.2018 - 19:23
fonte

1 risposta

0

Partendo dall'idea di cercare di far corrispondere il BSSID e rimuoverlo fino alla fine della riga, mi è venuto in mente questo:

airport -s \
| sed 's# ..:..:..:..:..:.. .*##g ; s#^ *##g ; 1,1d' \
| sort -u

La riga sed è in realtà 3 parti:

  1. Trova il BSSID cercando 2 caratteri separati da due punti, ripetuti 5 volte, e poi tutto fino alla fine della riga ( .* )

  2. Corrispondenza dall'inizio della riga ( ^ ) e quindi qualsiasi numero di spazi ( .* )

  3. Eliminata la prima riga ( 1,1d ) che contiene le informazioni di intestazione di cui non ci interessa: "SSID BSSID RSSI CANALE HT CC SECURITY (auth / unicast / group)"

La riga sort -u assicura che ogni SSID venga visualizzato solo una volta.

Forse non è l'ideale, ma potrebbe essere un'opzione.

L'unico possibile "trucco" che posso pensare è che penso che a volte i BSSID possono essere ridotti a 1 carattere invece di 2 se il primo carattere è uno zero, ma non sono sicuro che airport lo faccia, e nessuna delle reti a cui ho accesso include uno zero in esse, quindi non posso testarlo. Forse qualcuno che è meglio alle espressioni regolari può suggerire uno migliore di quello che ho.

    
risposta data 03.11.2018 - 05:41
fonte

Leggi altre domande sui tag