.titleBar { margin-bottom: 5px!important; }

[Gelöst] Wlan ausschalten, wenn kein VPN

Dieses Thema im Forum "Freetz" wurde erstellt von JokerGermany, 21 Mai 2018.

  1. JokerGermany

    JokerGermany Mitglied

    Registriert seit:
    7 Aug. 2007
    Beiträge:
    465
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    #1 JokerGermany, 21 Mai 2018
    Zuletzt bearbeitet: 23 Mai 2018
    Ich habe hier eine etwas speziellere Proxy Problematik.
    Ich hätte eigentlich gerne die folgende Lösung: Wenn an Lan1 (Internet) kein Kabel angeschlossen ist, soll das Wlan ausgehen, damit Mobile Geräte ihr Mobiles Internet nutzen.
    Da ich dafür auf die schnelle keine Lösung gefunden habe und diese nur noch bis Juli brauche, habe ich mir eine andere Lösung überlegt:
    Wenn der VPN nicht aufgebaut ist, soll das Wlan ausgehen. Diese Lösung hat auch den Vorteil, dass bei nicht funktionierendem Proxy das Wlan ausgeschaltet wird...

    Ich habe schon eine crontab Lösung von @MaxMuster , welche den VPN neustartet, wenn die Verbindung abgerissen ist.
    Code:
    */4 * * * *    ping -q -w 2 192.168.2.1 1>&2 2>/dev/null || /mod/etc/init.d/rc.openvpn restart
    
    192.168.2.1 ist hierbei die IP auf der anderen Seite des VPN Tunnel.
    Die Lösung klappt sehr gut, daher habe ich gedacht, dass ich meine Wlan Problematik auch so lösen kann.
    Code:
    */5 * * * *    ping -q -w 2 192.168.2.1 1>&2 2>/dev/null || /etc/init.d/rc.net wlanstop
    */2 * * * *    ping -q -w 2 192.168.2.1 1>&2 2>/dev/null && /etc/init.d/rc.net wlanstart
    
    Wo liegt mein Fehler?

    €dit:
    Das Skript scheint nun zu funktionieren, der unten genannte crontab aufruf scheint immer noch falsch
    https://github.com/JokerGermany/WlanAusschaltenFreetz
     
  2. PeterPawn

    PeterPawn IPPF-Urgestein

    Registriert seit:
    10 Mai 2006
    Beiträge:
    10,674
    Zustimmungen:
    456
    Punkte für Erfolge:
    83
    Beruf:
    IT-Freelancer
    Ort:
    Berlin
    Schau Dir besser an, was in den Lua-Seiten beim Ein-/Ausschalten des WLAN geschieht - das "wlanstart" und "wlanstop" in der "rc.net" kann auch in allen möglichen anderen Situationen aufgerufen werden (Du brauchst nur mal in der "rc.net" in "startall" und "stopall" schauen und dann noch einmal, an wievielen Stellen diese dann wieder aufgerufen werden) ... diese Aufrufe taugen einfach nicht zum (dauerhaften) Ein- und Ausschalten des WLAN.

    Da kommst Du mit einem passenden "ctlmgr_ctl" vermutlich weiter ... und man kann durchaus auch in einer "crontab" ein Skript aufrufen und muß nicht zwangsläufig eine "Kommandokette" auf Teufel komm raus realisieren wollen. Wenn man's richtig macht, kann man sogar mit demselben Skript (das man dann wieder im Minutenrhythmus aufrufen könnte) das WLAN ein- und ausschalten lassen, je nach Ergebnis des "ping". Wobei man bei einer Minute dann auch gleich mit einem Loop und "sleep" arbeiten kann ... und dann kann man sogar tatsächlich den Status des LAN-Ports abfragen lassen (ebenfalls mit "ctlmgr_ctl", wenn ich mich nicht irre - das findet man wieder in den Netzwerk-Seiten des GUI, wo die Angaben für "grüne oder graue LED" zusammengesucht werden) und muß nicht auf ein "ping" bauen (was auch mal aus anderem Grund schiefgehen kann und ein eher unzuverlässiger Indikator ist, zumindest ohne Eskalationsstrategie).
     
  3. JokerGermany

    JokerGermany Mitglied

    Registriert seit:
    7 Aug. 2007
    Beiträge:
    465
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Hab gerade keine Fritz!box in der Nähe, aber ich vermute du meinst:
    Code:
    ctlmgr_ctl r eth0 status/carrier
    
    für auslesen von lan und
    Code:
    ctlmgr_ctl w wlan settings/STA_enabled 1
    
    bzw
    Code:
    ctlmgr_ctl w wlan settings/STA_enabled 0
    
    für wlan an und ausschalten?
     
  4. PeterPawn

    PeterPawn IPPF-Urgestein

    Registriert seit:
    10 Mai 2006
    Beiträge:
    10,674
    Zustimmungen:
    456
    Punkte für Erfolge:
    83
    Beruf:
    IT-Freelancer
    Ort:
    Berlin
    Ich weiß es aus dem Stand auch nicht und müßte selbst erst nachsehen in den Dateien aus der Firmware ... aber neuere Versionen des "ctlmgr_ctl" erlauben auch das "Aufzählen" der bekannten Variablen für die verschiedenen Plugins mit dem "-u"-Parameter beim Aufruf (einfach mal mit "-h" aufrufen, da stehen dann die bekannten Möglichkeiten der Parametrierung).
     
  5. JokerGermany

    JokerGermany Mitglied

    Registriert seit:
    7 Aug. 2007
    Beiträge:
    465
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Code:
    ctlmgr_ctl -?
    usage: ctlmgr_ctl [options] <r [ui-module key]+> | <w [ui-module key value]+> | <u [ui-module]*> | <del [ui-module command]+
    options:
      -?                 - print this help
      -s STRING          - string: SID to use. (NULL)
      -v                 - bool: echo variable name, not only value. (NOTSET)
      -d CHAR            - use character instead of TAB for field delimiter. ()
      -D STRING          - switch debug logs on. (FUNC)
    (r: read), then list of tuples describing each value to be read (at least one)
    (w: write), then list of triples dcodeescribing each value to be read (at least one)
    (u: dump), then list of ui-modules. If empty, will provide list of available ui-modules
    (del), then command string, which node should be deleted
    (l: list), list variable
    examples:
    1) ctlmgr_ctl w wlan settings/STA_enabled 1
    2) ctlmgr_ctl r wlan settings/STA_enabled
    3) ctlmgr_ctl u wlan
    4) ctlmgr_ctl del landevice landevice:command/landevice0
    5) ctlmgr_ctl l landevice "settings/landevice/list(UID,allow_pcp_and_upnp,igd_fw_cnt_pcp,igd_fw_cnt_upnp)"
    
    Aber irgendwie bleibt er bei
    Code:
    ctlmgr_ctl w wlan settings/STA_enabled 0 
    
    trotzdem an obwohl
    Code:
    ctlmgr_ctl r wlan settings/STA_enabled
    
    0 anzeigt.

    Aber egal, ich will daraus keine Wissenschaft machen, so wichtig ist es dann nicht mehr für die letzten 2 Monate...
     
  6. PeterPawn

    PeterPawn IPPF-Urgestein

    Registriert seit:
    10 Mai 2006
    Beiträge:
    10,674
    Zustimmungen:
    456
    Punkte für Erfolge:
    83
    Beruf:
    IT-Freelancer
    Ort:
    Berlin
    "STA_enabled" wäre wohl ohnehin eher dafür verantwortlich, ob die Box als WLAN-Client arbeitet oder nicht.

    Hier sind eher "ap_enabled" und "ap_enabled_scnd" die richtigen Einstellungen, wenn ich mich richtig erinnere ... nachsehen will ich jetzt trotzdem nicht.
     
    JokerGermany gefällt das.
  7. JokerGermany

    JokerGermany Mitglied

    Registriert seit:
    7 Aug. 2007
    Beiträge:
    465
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Ähm, danke aber dumme geschichte:
    ap_enabled_scnd hat funktioniert, aber nur zum ausschalten.
    Der Wert ist wieder auf 1 die Fritzbox auch mehrmals neugestartet, aber jetzt sieht man wie das wlan in der Fritzbox oberfläche nach dem start erst grün ist und dann ausgeschaltet wird.
    In der Oberfläche kann man nichts mehr einstellen...
    wlanstart hat auch nichts geholfen....
     
  8. PeterPawn

    PeterPawn IPPF-Urgestein

    Registriert seit:
    10 Mai 2006
    Beiträge:
    10,674
    Zustimmungen:
    456
    Punkte für Erfolge:
    83
    Beruf:
    IT-Freelancer
    Ort:
    Berlin
    Beide gleichzeitig setzen bzw. löschen ... das sind deshalb zwei getrennte Werte, weil man damit (theoretisch) die beiden Bänder auch getrennt steuern könnte. Das "ap_enabled_scnd" (das dürfte "second" heißen) ist für das 5 GHz-Band.

    Ansonsten ... wenn gar nichts mehr geht, einfach die "wlan.cfg" aus den Standardeinstellungen (in /etc) nach "/var/flash" schaffen (Achtung, TFFS - braucht "character oriented I/O" beim Schreiben und kein "cp" o.ä.) und die Box neu starten. Beim Schreiben der "wlan.cfg" sollte der "ctlmgr" nicht aktiv sein (einfach mit "ctlmgr -s" anhalten) - ansonsten überschreibt der später beim Stoppen im schlechtesten Fall die "wlan.cfg" wieder.

    Daß man dann das WLAN neu konfigurieren muß (sofern man nicht die Datei vor den eigenen Versuchen mit "ctlmgr_ctl" gesichert hat und die nun einfach wiederherstellen kann - dann braucht man die Standardwerte natürlich auch nicht aus /etc, wobei die "wlan.cfg" dort m.W. ohnehin eher kurz ist), versteht sich von selbst.
     
  9. JokerGermany

    JokerGermany Mitglied

    Registriert seit:
    7 Aug. 2007
    Beiträge:
    465
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    #9 JokerGermany, 22 Mai 2018
    Zuletzt bearbeitet: 23 Mai 2018
    Ja, war trotzdem auf einmal beides aus, obwohl ich nur den einen befehl gesendet habe.
    War wohl eine böse wechselwirkung mit settings/STA_enabled die immer noch auf 1 war, seit die wieder auf 0 steht funzt es mit an und aus und 5Ghz und 2,4GHz XD

    Bloß kann ich das nicht mehr über das AVM GUI steuern, dort ist es ausgegraut, ka ob es an meiner fritzbox liegt, die sich bei neustarts sowieso seltsam verhält, weswegen ich diese Lösung brauch da ich sonst einfach die FritzBox vom Strom nehmen würde..., siehe anderen Thread...
    https://www.ip-phone-forum.de/threads/fritz-box-vergisst-dass-sie-openvpn-installiert-hat-und-verhält-sich-seltsam.299028/#post-2271939
     
  10. JokerGermany

    JokerGermany Mitglied

    Registriert seit:
    7 Aug. 2007
    Beiträge:
    465
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    #10 JokerGermany, 23 Mai 2018
    Zuletzt von einem Moderator bearbeitet: 23 Mai 2018
    So, als Script definitiv besser aufgehoben, aber es sollte erstmal funktionieren...
    Code:
    */5 * * * *    ctlmgr_ctl r eth0 status/carrier || ctlmgr_ctl w wlan settings/ap_enabled 0
    */5 * * * *    ctlmgr_ctl r eth0 status/carrier || ctlmgr_ctl w wlan settings/ap_enabled_scnd 0
    */2 * * * *    ctlmgr_ctl r eth0 status/carrier && ctlmgr_ctl w wlan settings/ap_enabled 1
    */2 * * * *    ctlmgr_ctl r eth0 status/carrier && ctlmgr_ctl w wlan settings/ap_enabled_scnd 1
    
    ### Zusammenführung Doppelpost by stoney ###

    So, hier als Skript ungetestet runtergeschrieben:
    Code:
    #!/bin/sh
    while [ true ]
    do
        while [ ctlmgr_ctl r eth0 status/carrier == 1 ]
        do
            if [ ctlmgr_ctl r wlan settings/ap_enabled_scnd == 0 ]
            then
                ctlmgr_ctl w wlan settings/ap_enabled_scnd 1
            fi      
            if [ ctlmgr_ctl r wlan settings/ap_enabled == 0 ]
            then
                ctlmgr_ctl w wlan settings/ap_enabled 1
            fi
            sleep 60
        done
        while [ ctlmgr_ctl r eth0 status/carrier == 0 ]
        do
            if [ ctlmgr_ctl r wlan settings/ap_enabled_scnd == 1 ]
            then
                ctlmgr_ctl w wlan settings/ap_enabled_scnd 0
            fi      
            if [ ctlmgr_ctl r wlan settings/ap_enabled == 1 ]
            then
                ctlmgr_ctl w wlan settings/ap_enabled 0
            fi
            sleep 60
        done
    done
    
    Das gleich hier nochmal mit ping.
    Wie gesagt ungetestet und einfach runtergeschrieben...
    Code:
    #!/bin/sh
    ip=192.168.222.1
    while [ true ]
    do
        ping -q -w 2 $ip 1>&2 2>/dev/null
        while [ $? == 0 && ctlmgr_ctl r eth0 status/carrier == 1 ]
        do
            if [ ctlmgr_ctl r wlan settings/ap_enabled_scnd == 0 ]
            then
                ctlmgr_ctl w wlan settings/ap_enabled_scnd 1
            fi          
            if [ ctlmgr_ctl r wlan settings/ap_enabled == 0 ]
            then
                ctlmgr_ctl w wlan settings/ap_enabled 1
            fi
            sleep 60
            ping -q -w 2 $ip 1>&2 2>/dev/null
        done
        while [ ctlmgr_ctl r eth0 status/carrier == 0 ]
        do
            if [ ctlmgr_ctl r wlan settings/ap_enabled_scnd == 1 ]
            then
                ctlmgr_ctl w wlan settings/ap_enabled_scnd 0
            fi          
            if [ ctlmgr_ctl r wlan settings/ap_enabled == 1 ]
            then
                ctlmgr_ctl w wlan settings/ap_enabled 0
            fi  
            sleep 60  
        done
    done 
    
    192.168.222.1 durch die IP/DNS Namen seines Wunsches ersetzen...
    https://github.com/JokerGermany/WlanAusschaltenFreetz/blob/master/wlanautoping-freetz.sh