fix(station): nmcli-Werte unmaskiert lesen, Doppelpunkt im Profilnamen
nmcli -t maskiert Doppelpunkte in Werten als \: und cut -d: -f2 schneidet ohnehin am ersten Doppelpunkt ab. Ein Profilname mit Doppelpunkt lieferte der Nachpruefung in ap_switch() damit einen abgeschnittenen Wert - und der Fehler zeigte in die unsichere Richtung: "Station aus" gemeldet, waehrend der Zugangspunkt weitersendet. Jetzt --escape no plus cut -f2-, auch bei den beiden Profilabfragen und in der Statusausgabe. Der nmcli-Stub in test_cli.sh maskiert jetzt wie das echte nmcli, sonst waere der neue Zusatzfall M1 mit und ohne Fix gruen.
This commit is contained in:
@@ -124,7 +124,7 @@ need_profile() {
|
||||
# $1 = NetworkManager-Profilname, der existieren muss.
|
||||
# -F: der Profilname ist ein Konfigurationswert, kein BRE-Muster - ein Name mit
|
||||
# "." oder "[" wuerde mit "grep -x" sonst falsch (oder gar nicht) treffen.
|
||||
nmcli -t -f NAME con show | grep -Fqx "$1" || {
|
||||
nmcli -t --escape no -f NAME con show | grep -Fqx "$1" || {
|
||||
echo "Fehler: NetworkManager-Profil '$1' fehlt - tools/station/setup_pi.sh ausfuehren" >&2
|
||||
exit 1
|
||||
}
|
||||
@@ -266,7 +266,15 @@ ap_switch() {
|
||||
# zeigt, und erst dann Erfolg melden (Fixrunde 1, I2) - sonst kann z.B. der
|
||||
# Migrations-AP mit oeffentlich bekanntem Passwort weitersenden, waehrend
|
||||
# das CLI "Station aus" behauptet.
|
||||
_active=$(nmcli -t -f GENERAL.CONNECTION device show wlan0 2>/dev/null | cut -d: -f2)
|
||||
# --escape no und "-f2-" gehoeren zusammen (Abschlussreview, M1): "nmcli -t"
|
||||
# maskiert Doppelpunkte IN WERTEN als "\:", und "cut -f2" schneidet ohnehin am
|
||||
# ersten Doppelpunkt ab. Ein Profilname mit Doppelpunkt ergaebe so einen
|
||||
# abgeschnittenen Wert, der Vergleich unten schluege fehl - und zwar in die
|
||||
# UNSICHERE Richtung: "Station aus" gemeldet, waehrend der Zugangspunkt
|
||||
# weitersendet. --escape no liefert den Rohwert, -f2- nimmt den ganzen Rest der
|
||||
# Zeile (die Ausgabe hat genau ein Feld, alles nach dem ersten Doppelpunkt
|
||||
# gehoert zum Wert).
|
||||
_active=$(nmcli -t --escape no -f GENERAL.CONNECTION device show wlan0 2>/dev/null | cut -d: -f2-)
|
||||
if [ "$_active" = "$AP_CONNECTION" ] || [ "$_active" = "$MIGRATE_AP_CONNECTION" ]; then
|
||||
echo "Fehler: wlan0 zeigt nach dem Ausschalten immer noch '$_active' aktiv - NetworkManager pruefen (Zugangspunkt bleibt an)" >&2
|
||||
return 1
|
||||
@@ -274,7 +282,8 @@ ap_switch() {
|
||||
return 0
|
||||
fi
|
||||
sudo nmcli con up "$_target" >/dev/null
|
||||
_active=$(nmcli -t -f GENERAL.CONNECTION device show wlan0 2>/dev/null | cut -d: -f2)
|
||||
# --escape no / -f2- aus demselben Grund wie oben.
|
||||
_active=$(nmcli -t --escape no -f GENERAL.CONNECTION device show wlan0 2>/dev/null | cut -d: -f2-)
|
||||
if [ "$_active" != "$_target" ]; then
|
||||
sudo nmcli con down "$AP_CONNECTION" >/dev/null 2>&1 || true
|
||||
sudo nmcli con down "$MIGRATE_AP_CONNECTION" >/dev/null 2>&1 || true
|
||||
@@ -835,7 +844,7 @@ full_off() {
|
||||
# macht "off" unabhaengig vom Anzeigedienst - ob der installiert, aktiv oder gerade
|
||||
# gescheitert ist, hat auf das Abschalten der Station keinen Einfluss.
|
||||
ap_switch ""
|
||||
if nmcli -t -f NAME con show | grep -Fqx "$HOME_CONNECTION"; then
|
||||
if nmcli -t --escape no -f NAME con show | grep -Fqx "$HOME_CONNECTION"; then
|
||||
if sudo nmcli con up "$HOME_CONNECTION" >/dev/null; then
|
||||
echo "Station aus, wlan0 zurueck im Heim-WLAN ($HOME_CONNECTION)"
|
||||
else
|
||||
@@ -1041,7 +1050,7 @@ PY
|
||||
printf 'Erkannt: %s\n' "$_erkannt"
|
||||
printf 'Dienst : %s\n' "$(systemctl is-active ninlight-station 2>/dev/null || true)"
|
||||
autooff_status_line
|
||||
printf 'wlan0 : %s\n' "$(nmcli -t -f GENERAL.CONNECTION device show wlan0 2>/dev/null | cut -d: -f2)"
|
||||
printf 'wlan0 : %s\n' "$(nmcli -t --escape no -f GENERAL.CONNECTION device show wlan0 2>/dev/null | cut -d: -f2-)"
|
||||
printf 'Adresse: %s\n' "$(ip -4 -br addr show wlan0 2>/dev/null | awk '{print $3}')"
|
||||
echo "Images :"
|
||||
images | while read -r f; do
|
||||
|
||||
Reference in New Issue
Block a user