Usando iw
Eu não tenho nm-tool
instalado, então eu uso iw
.
Este comando classifica os pontos de acesso pela força do sinal, mais forte primeiro:
sudo iw dev wlan0 scan | egrep "signal:|SSID:" | sed -e "s/\tsignal: //" -e "s/\tSSID: //" | awk '{ORS = (NR % 2 == 0)? "\n" : " "; print}' | sort
Cada comando explicou:
iw dev wlan0 scan
: Procure pontos de acesso acessíveis via interface wlan0
egrep "signal:|SSID:"
: Obtenha as linhas com intensidade do sinal e os SSIDs da iw
saída. A saída é assim agora:
sinal: -77.00 dBm
SSID: nameOfAccessPoint1
sinal: -71.00 dBm
SSID: nameOfAccessPoint2
sed -e "s/\tsignal: //" -e "s/\tSSID: //"
: Reduza egrep
a saída para isso:
-77,00 dBm
nameOfAccessPoint1
-71,00 dBm
nameOfAccessPoint2
awk '{ORS = (NR % 2 == 0)? "\n" : " "; print}'
: Traga a força do sinal e o SSID na mesma linha. Mais especificamente, quando o número da linha ( NR
) é par, ou seja, estamos em uma linha que mostra um ponto de acesso, o separador de registros de saída ( ORS
) deve ser uma quebra de linha. Caso contrário, estamos na linha que contém a força do sinal, então nos juntamos à linha criando ORS
um espaço simples.
Se obtivermos sort
essa saída, terminaremos com uma lista de pontos fortes e pontos de acesso do sinal, mostrando o ponto de acesso com o sinal mais forte no topo:
-71.00 dBm nameOfAccessPoint2
-77.00 dBm nameOfAccessPoint1
Cuidado: Alguns pontos de acesso podem ter uma capacidade estendida: Recursos estendidos: * Lista SSID
Portanto, grepping "SSID:" em vez de "SSID" ajuda a evitar essa saída extra, que faria com que o comando falhasse de outra maneira.