Wlan über rc.local ausschalten

  • Hey ihr,
    ich bin leider mit meinem Latein am Ende... :s
    Aber erstmal von Anfang an. Ich habe ein Pi 2 mit Raspbian. Als Verbindung zum Router habe ich ein LAN-Kabel und diesen Edimax Wlan-Stick.
    Die Wlan-Funktion benötige ich nur in Ausnahmefällen, sodass es für mich sinvoll ist das Wlan "da zu haben" aber halt im ausgeschaltet Zustand.
    Über das Terminal Wlan an/aus schalten geht problemlos. Meine Idee war jetzt "ifdown wlan0" in die rc.local-Datei zu schreiben.
    Das funktioniert leider nicht. Was ist an meinem Vorgehen falsch?

    MfG
    lixe


  • Über das Terminal Wlan an/aus schalten geht problemlos.

    Wie machst Du das über das Terminal?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample


  • sudo ifdown wlan0

    Dann versuch mal mit "/sbin/ifdown wlan0" in einem ausführbaren Script (statt in der rc.local) aus dem Verzeichnis "/etc/network/if-up.d".
    Im Script sollte vor "/sbin/ifdown wlan0", als Bedingung geprüft werden, dass das wlan0-Interface UP ist.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Moin,
    ich will das nun nicht nachstellen. Würde ich mir mein Zugangsbein abschneiden...

    Eventuell hilft es den vollen Pfad anzugeben.
    Also " /sbin/ifdown wlan0"

    Und bitte vor dem "exit 0" in der rc.local

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Moin,
    also ich habe jetzt mal beide Varianten ("/sbin/ifdown wlan0" /// "/etc/network/if-up.d") im rc.local ausprobiert.
    Es klappt. Das freut mich. Aber beim Hochfahren erscheint jetzt unter den ganzen "OK" jetzt ein "Failed"?.
    Was ich auf der schnelle auch noch erkennen konnte war, dass dort auch rc.local mit auftauchte...
    Wie kann man die "Hochfahranzeige" so verlangsamen, dass man es wirklich er kennt bzw. wird sie irgendwo abgespeichert?
    Und muss man da jetzt überhaupt noch etwas unternehmen?

    Vielen Dank für die schnelle Hilfe!

    MfG
    lixe
    Automatisch zusammengefügt:
    Nachtrag:
    "Failed" erscheint immer wenn:
    /usr/bin/numlockx on
    /etc/network/if-up.d
    im rc.local aktiv sind. numlockx ist installiert...
    Trotzdem ist Ziffernblock nach dem Start ein und Wlan aus...

    Einmal editiert, zuletzt von lixe (24. Oktober 2015 um 00:07)


  • ... "/etc/network/if-up.d") im rc.local ausprobiert.

    BTW: Wo habe ich geschrieben, dass Du "/etc/network/if-up.d" im rc.local ausprobieren sollst?

    In meinem Beitrag habe ich u. a. Folgendes geschrieben:

    Zitat


    ... in einem ausführbaren Script (statt in der rc.local) aus dem Verzeichnis "/etc/network/if-up.d".

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Ich schliesse mich rpi444 an, dank ihm ist es mir auf diese Art gelungen ein Script beim Herunterfahren auszuführen, aber eben aus /etc/network/if-down.d. Erstelle dir mal wie von ihm vorgeschlagen das Script unter /etc/network/if-up.d und füge mal testweise zB ein sleep 10 oder 5 dazu welches das deaktivieren deiner WLAN Schnittstelle etwas verzögert, das hatte bei mir wunder bewirkt. Zwar ein anderes Thema, aber evtl gut als Beispiel.

    Grüsse

  • Vielleicht sollte man zusammenfassend folgendes beschreiben:

    /etc/rc.local wird relativ spät vom Bootvorgang ausgeführt, quasi kurz bevor der Login-Promt kommt. Bei Raspbian ist Standardmäßig bereits eine Zeile zur Ausgabe der IP-Adress eingetragen und die sieht man demzufolge auch erst kurz vor dem Login-Promt.
    Allerdings ist hier das Problem, das dennoch nicht sichergestellt sein kann das die WLAN Schnittstelle bereits initialisiert wurde. Es könnte also durch aus passieren das /etc/rc.local zu früh ausgeführt wird und erst danach WLAN "hoch fährt".
    /etc/rc.local hat auch 2 Besonderheiten: Zum einen ist es eigentlich nur ein normales Script aber zum anderen muss es mit "exit 0" beendet werden sonst kommt eben kein OK sondern FAILED. Erstes bedeutet das es Ausführrechte benötigt und ein Shebang gesetzt sein muss - letzteres bedeutet dass wenn ein Befehl in der Datei fehlschlägt wird ein anderer Exit-Code ausgegeben...

    Aber aufgrund des "Zeitpunkt"-Problems ist es besonders in diesem Fall besser und logischer die exakt für sowas vorgesehene Netzwerk-Schnittstellen-Verzeichnisse zu verwenden:

    Es gibt zweit Zustände die vom Networkmanager für jede Schnittstelle beachtet wird: "hoch" oder "herunter"-Fahren, also Aktivierung (up) oder Deaktivierung (down) einer Schnittstelle.

    Für beides gibt es extra Verzeichnisse:
    /etc/network/if-up.d/
    /etc/network/if-down.d/

    Wenn diese Verzeichnisse nicht existieren (eher ungewöhnlich) dann müsst ihr diese manuell als root (superuser) erstellen: sudo mkdir /etc/network/{if-down.d,if-up.d}

    Dateien in diesen Verzeichnissen müssen Ausführbar sein: sudo chmod 755 /etc/network/if-up.d/wlan
    Dateiendung spielt keine Rolle - wichtiger ist das vorhanden sein eines Shebang's
    Als Vorlage könnt ihr euch an den Beispieldateien in /usr/share/doc/ifupdown/examples/ orientieren.
    Den Scripts stehen auch besondere Umgebungsvariablen (environment variables) zur Verfügung, welche man in den Scripts verwenden kann. Mehr dazu siehe Konsolenbefehl man interfaces

    Aber leider hat rpi444 eine unvollständige Lösung genannt - denn das Problem hierbei ist:

    Würde in dem Script einfach nur das WLAN Interface deaktiviert werden, könnte man nie wieder das Interface in den aktiven Zustand kriegen, da es sich dann nach manueller Aktivierung durch das Script wieder deaktiviert :X
    Scripts in if-up.d/ werden ausgeführt wenn das Interface aktiviert wird. Bootet man, wird es erst aktiviert und durch ein Script in if-up.d/ wieder deaktiviert. Möchte man es dann manuell aktivieren passiert genau das selbe wie beim Booten: Erst wird es aktiviert aber durch ein Script in if-up.d/ wird es wieder deaktiviert.

    Auf dieses spezielle Anliegen hier bezogen, ist es also nicht ganz so einfach wie gedacht :fies:

    Eine Möglichkeit wäre ein sog. "flag file" zu verwenden. Es würde also nur beim ersten mal ausführen des Scripts ein mal eine temporäre Datei erzeugt. Beim nächsten ausführen wird auf die Existenz dieser Datei geprüft und falls vorhanden das Script beendet ohne das Interface zu deaktivieren.

    Nun fragt euch wie so ein Script aussähe? Tja...

    Spoiler anzeigen

    /etc/network/if-up.d/disableWlan
    [code=php]#!/bin/sh
    FLAGFILE=/var/run/work-was-already-done

    [ "$IFACE" != wlan0 ] && exit 0
    [ "$MODE" != start ] && exit 0
    if [ ! -f $FLAGFILE ]; then
    /sbin/ifdown wlan0
    /usr/bin/touch $FLAGFILE
    fi

    exit 0
    [/php]

    :angel:

  • Wenn der WLAN-Dongle angesteckt ist, sollte das Ding erkannt werden und die nötigen Scripte automatisch ausgeführt werden.
    Ich habe es in verschiedenen Situationen noch nie erlebt, dass ein ansteckender WLAN-Stick, der schon funktionierte, nicht rechtzeitig vom System erkannt und wurde und sich im WLAN eine Adresse geholt hatte.
    Das Netzwerk wir, bei Wheezy und bei Jessie, sehr früh hochgefahren, danach laufen noch so einige Dienste, die Teilweise auf das Netzwerk angewiesen sind.
    Ich sehe also keinen Grund, das WLAN später nochmals zu aktivieren.

    Wenn doch, könnte man ein Script bauen, dass ein 'ifdown wifi0 && ifup wifi0' ausführt.
    Hier wird das WLAN-Interface , wenn es sauber runter gefahren wurde, gleich wieder gestartet.
    (Aber warum? Gibt es wirklich fälle, in denen es nicht normal funktioniert?)

    Computer ..... grrrrrr

  • Rasp-Berlin Du verstehst anscheint nicht was bisher geschrieben wurde. Es gibt kein Problem mit erkennen des WLAN Sticks. Auch nicht mut beziehen einer IP. Es geht auch nicht darum das WLAN deshalb später noch mal zu aktivieren.

    Bitte ersten Beitrag noch mal genauer lesen - und am besten den Rest auch noch mal :fies:

    Der TE braucht WLAN nur wenn er's haben möchte. Er aktiviert das Interface bei bedarf. Bis dahin soll es aber deaktiviert sein. Das ist Kern des Threads.


  • ..., könnte man nie wieder das Interface in den aktiven Zustand kriegen, da es sich dann nach manueller Aktivierung durch das Script wieder deaktiviert :X

    Das geht schon, in dem man z. B. vor der manuellen Aktivierung, das Script "temporär verschwinden" lässt:

    Code
    sudo chmod 644 /etc/network/if-up.d/wlan && sudo ifup wlan0

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample


  • Was macht so ein Script dann überhaupt noch für ein Sinn? :s

    Ja, aber darum ging es mir hier nicht, es war lediglich ein Hinweis auf dein "... nie wieder das Interface in den aktiven Zustand kriegen ... nach manueller Aktivierung ...".

    Der TE hat ja geschrieben, dass er bei Bedarf, dann manuell das Interface aktivieren will. Die Lösung mit dem Script hast Du ja gezeigt/präsentiert.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!