Я хочу получить ssid подключенных в данный момент сетей wifi в скрипте bash. Я пытаюсь написать скрипт резервного копирования, который будет выполнять резервное копирование на сервер NAS, если он подключен к моей домашней сети wifi. Я изучил команду, ip route
но она возвращает только некоторую базовую информацию -
решение1
iwgetid -r
или
iwgetid wlan0 -r
решение2
Ниже приведено то, что вам нужно, если вы подключены с помощью одного беспроводного устройства:
nmcli -t -f ssid dev wifi| cut -d\' -f2
решение3
Эта команда возвращает SSID подключенного беспроводного адаптера (при условии, что у вас есть только один).
iwconfig | grep ESSID | sed -e 's/.*ESSID:"\(.*\)".*/\1/'
Он также выводит предупреждение на терминал, но на stderr, так что это не имеет значения.
remi@host~$id:~$ id=$(iwconfig | grep ESSID | sed -e 's/.*ESSID:"\(.*\)".*/\1/')
eth0 no wireless extensions.
lo no wireless extensions.
virbr0 no wireless extensions.
tap0 no wireless extensions.
remi@host:~$ echo $id
CISPI
решение4
С NetworkManager-1.8.4 это дало правильный результат
LANG=C nmcli -t -f active,ssid dev wifi | grep ^yes | cut -d: -f2-
Для каждой части команды есть причина.
LANG=C
потому что мы используем grep для локализованной строки, поэтому принудительно переводим на английскийnmcli ... -f active,ssid ...
заставляет печатать ssid с активным статусом в формеyes:myssid
no:otherssid
grep ^yes
мы хотим фильтровать активные соединения, но не SSID с текстом «да», поэтому это и есть причина^
cut ... -f2-
печатает остаток строки после первого разделителя, чтобы мы могли получить SSID с разделителем внутри