Brauche Hilfe bei Shellscript - WLAN schalten

shadow000

Mitglied
Mitglied seit
25 Apr 2005
Beiträge
653
Punkte für Reaktionen
0
Punkte
16
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?
 
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.)
 
Zuletzt bearbeitet:
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
 
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)
 
Zuletzt bearbeitet:
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 :-(
 
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 ...

 
Zuletzt bearbeitet:
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 :(
 
setzt mal als bedingung das rein :
Code:
[ -z `ifconfig | grep wlan` ]
 
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).
 
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?
 
Zuletzt bearbeitet:
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 ;-)
 
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 ...
 
Zuletzt bearbeitet:
Kostenlos!

Statistik des Forums

Themen
247,974
Beiträge
2,278,224
Mitglieder
377,073
Neuestes Mitglied
Drakkan