utilizzando iw
Non ho nm-tool
installato quindi uso iw
.
Questo comando ordina i punti di accesso in base alla potenza del segnale, prima il più forte:
sudo iw dev wlan0 scan | egrep "signal:|SSID:" | sed -e "s/\tsignal: //" -e "s/\tSSID: //" | awk '{ORS = (NR % 2 == 0)? "\n" : " "; print}' | sort
Ogni comando ha spiegato:
iw dev wlan0 scan
: Cerca i punti di accesso raggiungibili tramite l'interfaccia wlan0
egrep "signal:|SSID:"
: Ottiene le linee con potenza del segnale e gli SSID iw
dall'uscita. L'output è simile a questo ora:
segnale: -77,00 dBm
SSID: nameOfAccessPoint1
segnale: -71,00 dBm
SSID: nameOfAccessPoint2
sed -e "s/\tsignal: //" -e "s/\tSSID: //"
: Riduce egrep
l'output a questo:
-77,00 dBm
nameOfAccessPoint1
-71,00 dBm
nameOfAccessPoint2
awk '{ORS = (NR % 2 == 0)? "\n" : " "; print}'
: Porta la potenza del segnale e l'SSID sulla stessa linea. Più specificamente, quando il numero di riga ( NR
) è pari, ovvero, ci troviamo su una riga che mostra un punto di accesso, il separatore del record di output ( ORS
) dovrebbe essere un'interruzione di riga. Altrimenti, siamo sulla linea che contiene la potenza del segnale, quindi ci uniamo alla linea creando ORS
uno spazio semplice.
Se abbiamo sort
questo output, finiremo con un elenco di intensità del segnale e punti di accesso, che mostra il punto di accesso con il segnale più forte in alto:
-71.00 dBm nameOfAccessPoint2
-77.00 dBm nameOfAccessPoint1
Attenzione: alcuni punti di accesso possono avere una capacità estesa: Funzionalità estese: * Elenco SSID
Quindi, grepping "SSID:" invece di "SSID" aiuta a evitare questo ulteriore output che altrimenti fallirebbe il comando.