Ich möchte die SSID des aktuell verbundenen WLAN-Netzwerks in einem Bash-Skript erhalten. Ich versuche, ein Sicherungsskript zu schreiben, das ein Backup auf einem NAS-Server durchführt, wenn dieser mit meinem WLAN-Heimnetzwerk verbunden ist. Ich habe mir den ip route
Befehl angesehen, aber er gibt nur einige grundlegende Informationen zurück -
Antwort1
iwgetid -r
oder
iwgetid wlan0 -r
Antwort2
Folgendes sollte Ihnen das bieten, wonach Sie suchen, vorausgesetzt, Sie sind über ein drahtloses Gerät verbunden:
nmcli -t -f ssid dev wifi| cut -d\' -f2
Antwort3
Dieser Befehl gibt die SSID des verbundenen WLAN-Adapters zurück (vorausgesetzt, Sie haben nur einen).
iwconfig | grep ESSID | sed -e 's/.*ESSID:"\(.*\)".*/\1/'
Es wird auch eine Warnung auf dem Terminal gedruckt, aber auf stderr, also spielt es keine Rolle
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
Antwort4
Mit NetworkManager-1.8.4 führte dies zum richtigen Ergebnis
LANG=C nmcli -t -f active,ssid dev wifi | grep ^yes | cut -d: -f2-
Es gibt einen Grund für jeden Teil des Befehls
LANG=C
liegt daran, dass wir grep auf lokalisierten Strings verwenden, also Englisch erzwingennmcli ... -f active,ssid ...
bewirkt, dass SSID mit aktivem Status im Formular gedruckt wirdyes:myssid
no:otherssid
grep ^yes
Wir möchten aktive Verbindungen filtern, aber keine SSIDs mit dem Text "ja", also ist das der Grund für^
cut ... -f2-
druckt den Rest der Zeile nach dem ersten Trennzeichen, so dass wir eine SSID mit Trennzeichen darin haben können