Je veux obtenir le ssid des réseaux wifi actuellement connectés dans un script bash. J'essaie d'écrire un script de sauvegarde dans lequel le script effectuera une sauvegarde sur un serveur NAS s'il est connecté à mon réseau wifi domestique. J'ai examiné la commande ip route
mais elle ne renvoie que des informations de base -
Les éléments suivants doivent indiquer ce que vous recherchez en supposant que vous êtes connecté à l'aide d'un périphérique sans fil:
nmcli -t -f ssid dev wifi| cut -d\' -f2
iwgetid -r
ou
iwgetid wlan0 -r
Cette commande renvoie le SSID de l'adaptateur sans fil connecté (en supposant que vous n'en ayez qu'un).
iwconfig | grep ESSID | sed -e 's/.*ESSID:"\(.*\)".*/\1/'
Il affiche également un avertissement sur le terminal, mais sur stderr, peu importe
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
Qu'en est-il de iwconfig wlan0 | sed -e '/ESSID/!d' -e 's/.*ESSID:"/"/'
?
J'ai essayé ceci:
iwconfig wlan0 | grep ESSID | cut -d\" -f2
nmcli -t -f NAME connection show --active
-t
Rend la sortie 'concise', donc pas d'en-tête-f NAME
Affiche uniquement le ssid--active
Affiche uniquement les connexions activesAvec NetworkManager-1.8.4, le résultat était correct.
LANG=C nmcli -t -f active,ssid dev wifi | grep ^yes | cut -d: -f2-
Il y a une raison pour chaque partie de la commande
LANG=C
est parce que nous utilisons grep sur une chaîne localisée, alors forcez l'anglaisnmcli ... -f active,ssid ...
provoque l'impression du ssid avec le statut actif dans le formulaire yes:myssid
no:otherssid
grep ^yes
nous voulons filtrer les connexions actives, mais pas les SSID avec le texte "yes", c'est donc la raison pour ^
cut ... -f2-
imprime le reste de la ligne après le premier séparateur afin que nous puissions avoir un SSID avec séparateur.