Quiero obtener el ssid de las redes wifi actualmente conectadas en un script bash. Estoy intentando escribir un script de respaldo donde el script realizará un respaldo en un servidor NAS si está conectado a la red wifi de mi hogar. He examinado el ip route
comando pero solo devuelve información básica:
Respuesta1
iwgetid -r
o
iwgetid wlan0 -r
Respuesta2
Lo siguiente debería proporcionarle lo que está buscando, suponiendo que esté conectado mediante 1 dispositivo inalámbrico:
nmcli -t -f ssid dev wifi| cut -d\' -f2
Respuesta3
Este comando devuelve el SSID del adaptador inalámbrico conectado (suponiendo que solo tenga uno).
iwconfig | grep ESSID | sed -e 's/.*ESSID:"\(.*\)".*/\1/'
También imprime una advertencia en la terminal pero en stderr, por lo que no 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
Respuesta4
Con NetworkManager-1.8.4, esto produjo el resultado correcto
LANG=C nmcli -t -f active,ssid dev wifi | grep ^yes | cut -d: -f2-
Hay una razón para cada parte del comando.
LANG=C
es porque estamos usando grep en una cadena localizada, así que fuerce el inglésnmcli ... -f active,ssid ...
hace que se imprima ssid con estado activo en el formularioyes:myssid
no:otherssid
grep ^yes
queremos filtrar las conexiones activas, pero no los SSID con el texto "sí", por lo que ese es el motivo de^
cut ... -f2-
imprime el resto de la línea después del primer separador para que podamos tener un SSID con separador