Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Script zum automatischen Ein-/Ausschalte des WLAN Adapters

Script zum automatischen Ein-/Ausschalte des WLAN Adapters

LinTec13.03.1313:45
Hallo zusammen,

ich habe ein Script geschrieben, dass den WLAN Adapter meines MBs ausschaltet, sobald ich ein LAN Kabel anschließe. Das Ganze wird via GeekTool alle 5 Sek. aufgerufen.

Ich habe aber noch zwei Probleme:
1. Die Password Abfrage bei ifconfig en1 up/down so ändern, dass kein PW im Code hinterlegt sein muss
2. Die Mehrfachverzweigung der IF Anweisung optimieren?

Vielleicht kann mir jemand von euch helfen.

Hier der Code:
*********************************************************************************************************
#!/bin/bash
#Status en0 = Ethernet Anschluss
#
var1=`ifconfig en0 | grep -i active | awk '{printf $2}'`
#
#Status en1 = WLAN Adapter
#
var2=`ifconfig en1 | grep -i active | awk '{printf $2}'`
#
#Passwort fuer den SUDO Befehl
#
password= //Hier wird das Passwort des Benutzers für den SUDO Befehl gespeichert
#
#Bedinungsabfrage
if [[ "$var1" = "inactive" && "$var2" = "inactive" ]]
then
echo $password | sudo -v -S
sudo ifconfig en1 up
sudo -k
echo "WLAN connected!"
else
if [[ "$var1" = "active" && "$var2" = "active" ]]
then
echo $password | sudo -v -S
sudo ifconfig en1 down
sudo -k
echo "Ethernet connected!"
else
if [[ "$var1" = "active" ]]
then
echo "Ethernet connected!"
else
echo "WLAN connected!"
fi
fi
fi
0

Kommentare

Duck Dodgers13.03.1314:07
Was genau soll der Sinn dafür sein? Wenn du die Reihenfolge in den Systemeinstellungen so sortierst, dass Ethernet oben steht, dann brauchst du WLAN nicht zu deaktivieren!

Aber du kannst Airport (ohne sudo) wie folgt deaktivieren:
/usr/sbin/networksetup -setairportpower en1 off
zum aktivieren
/usr/sbin/networksetup -setairportpower en1 on
0
LinTec13.03.1315:42
Der Sinn ist, wenn ich das Ethernet Kabel aus dem MB entferne, dann wird automatisch die WLAN Verbindung aktiviert, wenn das Ethernet Kabel eingesteckt wird, dann wird das WLAN deaktiviert.
Hintergrund ist, wenn das MB bei mir auf dem Schreibtisch steht, dann wird es via Ethernet angeschlossen, dann brauche ich das WLAN nicht mehr. Wenn ich dann aber das MB mit ins Wohnzimmer etc. nehme, dann wird automatisch das WLAN aktiviert und ich muss das nicht mehr manuell machen.
Das Script habe ich ins Geektool eingebunden. Wenn ich in den Systemeinstellungen die Reihenfolge ändere, dann wird der WLAN Adapter nicht automatisch Ein- oder Ausgeschaltet, wenn das Ethernet Kabel eingesteckt ist.

Aber die beiden Befehle, die du mir genannt hast sind Gold wert! Danke dafür. Sowas habe ich gesucht. Jetzt kann ich das Script entsprechend anpassen.
0
Schildie
Schildie13.03.1315:43
Duck Dodgers
Wenn du die Reihenfolge in den Systemeinstellungen so sortierst, dass Ethernet oben steht, dann brauchst du WLAN nicht zu deaktivieren!


Wenn du es wirklich sorum sortierst, macht dein Mac automatisch genau das, was du hier willst, auch ohne alle 5 Sekunden loszurödeln
0
_mäuschen
_mäuschen13.03.1316:36
LinTec

Das Script habe ich ins Geektool eingebunden. Wenn ich in den Systemeinstellungen die Reihenfolge ändere, dann wird der WLAN Adapter nicht automatisch Ein- oder Ausgeschaltet, wenn das Ethernet Kabel eingesteckt ist.

Willst Du Strom sparen
0
LinTec13.03.1318:53
Also ich habe das bei mir in den Systemeinstellungen geprüft.
Reihenfolge 1. Ethernet 2. WLAN
Wenn ich das Ethernet Kabel ziehe wird WLAN nicht aktiviert und umgekehrt. Gibt es da noch eine weitere Einstellung die ich checken muss?

@_mäuchen: Nein ich will keinen Strom sparen. Ich möchte nur, dass wenn ich den Rechner auf dem Schreibtisch stehen habe, dann möchte ich gerne das alles über Ethernet geht. Ich sehe ausserdem keinen Sinn, warum das WLAN an sein soll. Dann wäre ja Ethernet und WLAN verbunden.
0
Duck Dodgers13.03.1319:03
Du musst WLAN aktiviert lassen! Also beides aktiv und dann in den Systemeinstellungen Ethernet über WLAN. Wenn das Kabel steckt, dann wird die Ethernet-Schnittstelle benutzt. Ziehst du das Kabel raus, dann nutzt du WLAN.

Aber wie gesagt du kannst networksetup nutzen, um Airport bzw. WLAN an- bzw. auszuschalten! en1 ist dabei die WLAN-Schnittstelle ... ggf. passt das nicht?
0
LinTec13.03.1319:40
Jetzt verstehe ich das. Beide Schnittstellen sind aktiv nur wird der Datenverkehr über die Ethernet Schnittstelle abgewickelt, wenn das Kabel angeschlossen ist.

Dann bleibe ich bei meinem Script. Ich habe es mit networksetup angepasst und funktioniert wunderbar.
0
_mäuschen
_mäuschen13.03.1319:42
Also doch Strom sparen
0
Duck Dodgers14.03.1309:16
0
LinTec14.03.1315:45
Ne ich will keinen Strom sparen

Aber es macht wieder Spaß ein Paar Scripte zu schreiben
0
penumbra14.03.1317:08
Für solche Spielchen eignet sich ControlPlane ganz wunderbar:
„enjoy life in full trains“
0
Lyhoo
Lyhoo14.03.1317:32
Ich klappe mein MacBook immer zu, wenn ich es woanders hin tragen will. Und erst wenn es schläft wird es bewegt.

LinTec
Ich würde versuchen, daß das Script nur beim Aufwachen läuft.
Z.B. mit Sleepwatcher
Ich habe Sleepwatcher nicht getestet.
0
Duck Dodgers14.03.1319:18
@Lyhoo
Du hast nicht verstanden, worum es geht
0
_mäuschen
_mäuschen14.03.1319:52
Er will einen Script zum Strom sparen
0
LinTec15.03.1313:13
@penumbra: Schau ich mir mal an. Sagt mir nämlich gar nix. Aber danke für den Tipp!

@_mäuschen: Wenn ich Strom sparen will, dann schalte ich mein MB aus
0
_mäuschen
_mäuschen15.03.1313:38
Ich empfehle dir nun diesen Support Artikel http://support.apple.com/kb/HT5289?viewlocale=de_DE

Da steht ganz genau wie es sich mit verschiedenen Umgebungen des Netzwerks verhält,
wie es Duck Dodgers schon erwähnte.

Es braucht keine scripts oder Ähnliches um deinem Wunsch (automatischen Ein-/Ausschalte des WLAN Adapters) gerecht zu werden.
0
LinTec18.03.1312:54
@_mäuschen: Ich habe mir den Beitrag durchgelesen. Erstmals vielen Dank dafür. Das Verfahren hat aber einen Nachteil, wenn ich das richtig verstanden haben. Die Umschaltung der Umgebungen erfolgt nicht automatisch. Dies muss manuell gemacht werden. Wenn das der Fall ist, dann wäre mein Script in dieser Hinsicht hilfreicher.

Aber ich werde das Heute Abend mal ausprobieren. Vielleicht habe ich da was übersehen und es funktioniert doch automatisch.
0
Duck Dodgers18.03.1313:22
@LinTec
Wenn du es richtig eingestellt hast, dann läuft das automatisch! Etehrnet oben und dadrunter WLAN ... den Rest macht OSX
0
LinTec18.03.1318:27
Also bei mir macht der das nicht automatisch.
Habe die Reihenfolge angepasst und auch ein zweites Profil erstellt. Wenn das Ethernet Kabel gezogen wird, dann bleibt das WLAN aus.

Anbei mal ein Screenshot von der Reihenfolge.
0
_mäuschen
_mäuschen18.03.1318:39
Solange bei Ethernet Verbunden steht, geht da nix
0
LinTec18.03.1318:49
Du Witzbold!

Auch wenn das Kabel getrennt ist, dann tut sich da nix.
0
_mäuschen
_mäuschen18.03.1319:59
Und wenn Airport jetzt auch noch unter Spannung stünde (d.h. Aktiviert), dann würde das System sich automatisch über das WLAN mit dem Internet verbinden.


Also geht es Dir doch nur ums Stromsparen
0
Igor Detlev19.03.1320:56
ich benutze für ähnliche Tasks (abhängig von der Umgebung automatisch die Passwortsperre an- und ausschalten) Control Plane. Ich kann es im Moment mangels LAN-Kabel nicht testen, aber wenn ich die Settings richtig sehe, kannst du damit das WLAN automatisch an- und abschalten, wenn der Rechner am LAN hängt.

Ist natürlich nicht so cool wie ein selbst geschriebenes Script.

http://www.controlplaneapp.com
0
hidalgo10.04.1312:16
Unabhängig des Sinns oder Unsinns dieses Unterfangens. Wäre es nicht möglich, statt den Skript alle 5 Sekunden laufen zu lassen, das so einzustellen, dass der Skript startet, wenn das Ethernet-Kabel ausgesteckt wird, bzw. en0 ausfällt?
Eine Art Fail-over, wenn man so will.
„«Probleme kann man nie mit derselben Denkweise lösen, durch die sie entstanden sind.» Albert Einstein“
0
_mäuschen
_mäuschen10.04.1312:27
Also ein anderes script, welches en0 checkt
0
hidalgo14.04.1323:05
_mäuschen
Also ein anderes script, welches en0 checkt
Nicht unbedingt. Irgendein Dienst läuft ja schon, der dafür sorgt, dass Ethernet aktiviert wird, wenn ein Kabel eingesteckt wird. Dieser soll einfach noch WLAN ausschalten. Also nicht ein anders Skript für die Überwachung der Schnittstellen, sondern nur eine andere Aktion.
„«Probleme kann man nie mit derselben Denkweise lösen, durch die sie entstanden sind.» Albert Einstein“
0
_mäuschen
_mäuschen15.04.1313:01
Also ein weiteres script für eine andere Aktion
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.