С помощью iw
Я не nm-toolустановил, поэтому я использую iw.
Эта команда сортирует точки доступа по силе сигнала, самый сильный сначала:
sudo iw dev wlan0 scan | egrep "signal:|SSID:" | sed -e "s/\tsignal: //" -e "s/\tSSID: //" | awk '{ORS = (NR % 2 == 0)? "\n" : " "; print}' | sort
Каждая команда объяснила:
iw dev wlan0 scan: Поиск точек доступа, доступных через интерфейс wlan0
egrep "signal:|SSID:": Получить линии с уровнем сигнала и SSID из iwвыходных данных. Вывод теперь выглядит так:
сигнал: -77,00 дБм
SSID: nameOfAccessPoint1
сигнал: -71,00 дБм
SSID: nameOfAccessPoint2
sed -e "s/\tsignal: //" -e "s/\tSSID: //": Уменьшите egrepвывод до этого:
-77,00 дБм
nameOfAccessPoint1
-71,00 дБм
nameOfAccessPoint2
awk '{ORS = (NR % 2 == 0)? "\n" : " "; print}': Приведите уровень сигнала и SSID на одной линии. Более конкретно, когда номер строки ( NR) четный, т. Е. Мы находимся на линии, показывающей точку доступа, разделитель выходной записи ( ORS) должен быть разрывом строки. В противном случае мы находимся на линии, содержащей силу сигнала, поэтому мы присоединяемся к линии, создавая ORSпростой пробел.
Если мы получим sortэтот вывод, мы получим список уровней сигнала и точек доступа, показывающий точку доступа с самым сильным сигналом сверху:
-71.00 dBm nameOfAccessPoint2
-77.00 dBm nameOfAccessPoint1
Осторожно: некоторые точки доступа могут иметь расширенные возможности: Расширенные возможности: * Список SSID
Таким образом, сокращение «SSID:» вместо «SSID» помогает избежать этого дополнительного вывода, что в противном случае могло бы привести к сбою команды.