Quero obter o SSID das redes Wi-Fi atualmente conectadas em um script bash. Estou tentando escrever um script de backup em que o script realizará um backup em um servidor NAS se estiver conectado à minha rede Wi-Fi doméstica. Examinei o ip route
comando, mas ele retorna apenas algumas informações básicas -
Responder1
iwgetid -r
ou
iwgetid wlan0 -r
Responder2
O seguinte deve fornecer o que você está procurando, supondo que esteja conectado usando 1 dispositivo sem fio:
nmcli -t -f ssid dev wifi| cut -d\' -f2
Responder3
Este comando retorna o SSID do adaptador sem fio conectado (assumindo que você tenha apenas um).
iwconfig | grep ESSID | sed -e 's/.*ESSID:"\(.*\)".*/\1/'
Ele também imprime aviso no terminal, mas no stderr, então não importa
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
Responder4
Com NetworkManager-1.8.4, isso produziu o resultado correto
LANG=C nmcli -t -f active,ssid dev wifi | grep ^yes | cut -d: -f2-
Há uma razão para cada parte do comando
LANG=C
é porque estamos usando grep na string localizada, então force o inglêsnmcli ... -f active,ssid ...
faz com que imprima o ssid com status ativo no formulárioyes:myssid
no:otherssid
grep ^yes
queremos filtrar conexões ativas, mas não SSIDs com texto "sim", então esse é o motivo^
cut ... -f2-
imprime o resto da linha após o primeiro separador para que possamos ter o SSID com o separador nele