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

Brauche Hilfe bei Shellscript - WLAN schalten

Dieses Thema im Forum "Freetz" wurde erstellt von shadow000, 29 Dez. 2006.

  1. shadow000

    shadow000 Mitglied

    Registriert seit:
    25 Apr. 2005
    Beiträge:
    653
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ich möchte ein Script basteln, das den WLAN-Status jeweils umkehrt, also AUS/AN
    Bisher habe ich ca. das hier:
    Code:
    if [ ifconfig|grep -c wlan == "0" ] ; then
    /etc/init.d/rc.net wlanstart
    else
    /etc/init.d/rc.net wlanstop
    fi
    
    Funktioniert natürlich nicht - hat jemand nen Tipp wie's klappt?
     
  2. u.g

    u.g Aktives Mitglied

    Registriert seit:
    27 März 2005
    Beiträge:
    1,398
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    #2 u.g, 29 Dez. 2006
    Zuletzt bearbeitet: 29 Dez. 2006
    Ich prüfe, ob WLAN an ist, so:
    Code:
    if ifconfig tiwlan0 2>/dev/null | grep UP.*RUN; then
       echo "WLAN ist an..."
    else
       echo "WLAN ist aus..."
    fi
    
    EDIT:
    Was soll dein 1. if bewirken ? "grep -c ... " kenn ich nicht ...
    (Die ifconfig-Ausgabe des jeweiligen Geräts enthält "UP" und "RUNNING", wenn WLAN an ist.)
     
  3. shadow000

    shadow000 Mitglied

    Registriert seit:
    25 Apr. 2005
    Beiträge:
    653
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    grep -c zählt die zeilen, gibt also hier 1 oder 0 zurück

    Code:
    if ifconfig tiwlan0 2>/dev/null | grep UP.*RUN; then
       /etc/init.d/rc.net wlanstop
    else
       /etc/init.d/rc.net wlanstart
    
    das funktioniert leider auch nicht
    WLAN ist hier immer an
     
  4. u.g

    u.g Aktives Mitglied

    Registriert seit:
    27 März 2005
    Beiträge:
    1,398
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    #4 u.g, 29 Dez. 2006
    Zuletzt bearbeitet: 29 Dez. 2006
    Worin unterscheiden sich denn bei dir die ifconfig-Ausgaben, wenn "an" und wenn "aus" ?

    EDIT:
    also bei "wlan aus" steht bei "ifconfig" bei dir nix mit "wlan" ?
    (bei mir schon)
     
  5. shadow000

    shadow000 Mitglied

    Registriert seit:
    25 Apr. 2005
    Beiträge:
    653
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    die ifconfig sachen sehen so aus wie sie sollen, mit grep kommt entweder 1/0 oder bei deinem script die zeile mit den infos oder alternativ nichts raus.
    das wlan wird vom script oben trotzdem nicht abgeschalten :-(
     
  6. u.g

    u.g Aktives Mitglied

    Registriert seit:
    27 März 2005
    Beiträge:
    1,398
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    #6 u.g, 29 Dez. 2006
    Zuletzt bearbeitet: 29 Dez. 2006
    Ich dachte, die if-Prüfung würde bei dir nicht klappen ...

    Bei mir (kein dsmod) schaltet "/etc/init.d/rc.net wlanstop" WLAN sofort aus (auch wenn noch Stationen aktiv sind).
    Keine Ahnung, warum bei dir scheinbar nicht ...

     
  7. shadow000

    shadow000 Mitglied

    Registriert seit:
    25 Apr. 2005
    Beiträge:
    653
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    es liegt am script bzw. an den if prüfungen
    der befehl schaltet wlan schon aus, nur nicht in der kombi oben.
    irgendwo ist da der wurm drin :(
     
  8. supamicha

    supamicha Mitglied

    Registriert seit:
    3 Dez. 2004
    Beiträge:
    567
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    setzt mal als bedingung das rein :
    Code:
    [ -z `ifconfig | grep wlan` ]
     
  9. u.g

    u.g Aktives Mitglied

    Registriert seit:
    27 März 2005
    Beiträge:
    1,398
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ich habe den Konstrukt aus #3 mal testweise in meine calllog eingebaut
    (so dass ich es durch Anruf mit best. Callerid auf best. Nr. starten lassen kann).
    Ergebnis: funktioniert bei mir wie erwartet (WLAN wird aus/an geschaltet).
     
  10. shadow000

    shadow000 Mitglied

    Registriert seit:
    25 Apr. 2005
    Beiträge:
    653
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #10 shadow000, 29 Dez. 2006
    Zuletzt bearbeitet: 29 Dez. 2006
    Mittlerweile hab ich es hinbekommen, Danke!
    Mein CGI sieht jetzt so aus:
    Code:
    if /sbin/ifconfig tiwlan0 | grep UP.*RUN;
    then
    /etc/init.d/rc.net wlanstop
    else
    /etc/init.d/rc.net wlanstart
    fi
    
    Das einzige Problem: Das Webinterface scheint das Ganze nicht wirklich mitzubekommen...


    Ach ja: Hat noch jemand einen Tipp, wie ich NUR die externe IP in eine Variable bekomme?
     
  11. u.g

    u.g Aktives Mitglied

    Registriert seit:
    27 März 2005
    Beiträge:
    1,398
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Und wo war jetzt das Problem? (der fehlende Pfad zu ifconfig?) :confused:

    Wenns um die Ermittlung der IP geht:
    http://www.ip-phone-forum.de/showthread.php?p=548875

    ... und dann z.B. mit sed, awk oder cut bearbeiten ...
    z.B. IP=`dmesg | grep set_snd_ipaddr | sed/awk/cut ...`
     
  12. shadow000

    shadow000 Mitglied

    Registriert seit:
    25 Apr. 2005
    Beiträge:
    653
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    ich hab nicht die geringste ahnung ;-)
    naja, schön dass es jetzt funktioniert.

    was die ip angeht: im dmesg output ist sie nicht (mehr) drin, sämtliche umwege über das webinterface wären für meinen zweck absoluter overkill ;-)
     
  13. u.g

    u.g Aktives Mitglied

    Registriert seit:
    27 März 2005
    Beiträge:
    1,398
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    #13 u.g, 30 Dez. 2006
    Zuletzt bearbeitet: 30 Dez. 2006
    Dann hätte ich noch diese Idee:
    Lege dir z.B. Script /var/tmp/onlinechanged an,
    beende multid und starte ihn so "multid -S /var/tmp/onlinechanged".
    Im "online"-Zweig von onlinechanged speicherst du die IP in einer Datei
    (z.B. "dmesg | grep set_snd_ipaddr | sed/cut/awk ... > /var/tmp/IP").
    Dann hast du die IP in der Datei und kannst sie daraus holen, wenn du sie brauchtst.
    Im offline-Zweig von onlinechanged wird die Datei wieder gelöscht.

    EDITH:
    Übrigens: deine if-Abfrage aus #1 läuft so nicht (Syntax), aber z.B. so:
    if [ `ifconfig|grep -c wlan` = "0" ]; then ...