MacOS X: Netzwerk-Umgebung automatisch ändern
Verschiedene Netzwerkumgebungen sind auf einem MacBook sehr praktisch, besonders wenn dieses oft an unterschiedlichen Orten und somit in unterschiedlichen Netzwerken zum Einsatz kommt. Doof nur, dass nach einem Standortwechsel die Umgebung jedes Mal von Hand eingestellt werden muss. Dabei ist das Macbook in den meisten Fällen eigentlich in der Lage, die aktuelle Umgebung selbst zu erkennen - z.B. durch WiFi-Hotspots in Reichweite oder angeschlossene Geräte.
Mit Informationen über die Umgebung lässt sich also ein Shellscript schreiben, das automatisch zur richtigen Umgebung wechselt. Dieses Script kann entweder über das Terminal, eine Verknüpfung oder idealerweise als Anmeldescript ausgeführt werden.
Das folgendes Beispiel-Script wechselt zur Umgebung A, wenn ein AccessPoint mit der SSID "MySSID" in Reichweite ist. Andernfalls wird zur Umgebung B gewechselt und das WLAN deaktiviert.
vi location.command
sudo networksetup -setairportpower en1 on
if /System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -s | grep MySSID
then
echo 'switching to A'
sudo networksetup -switchtolocation "A"
else
echo 'switching to B'
sudo networksetup -setairportpower en1 off
sudo networksetup -switchtolocation "B"
fi
"A" und "B" sind die Namen von bereits existierenden Netzwerkumgebungen, "en1" ist der Airport-Adapter.
Adminrechte
Um die Passwortabfrage zum Ändern der Netzwerkkonfiguration zu umgeben, kann über visudo
das Ausführen von networksetup
als Root ohne Passwort erlaubt werden:
visudo
Folgende Zeile hinzufügen:
user ALL=NOPASSWD: /usr/sbin/networksetup
Script als Anmeldeobjekt ausführen
Um das Script via Systemeinstellungen -> Benutzer & Gruppen -> Anmeldeobjekte
beim Start von MacOS X auszuführen, empfiehlt es sich das Script mit der Dateienxung .command
abzuspeichern und mittels chmod +x <name>.command
ausführbar zu machen. Danach kann diese Datei ganz normal als Anmeldeobjekt hinzugefügt werden.
Somit stellt der Mac die Umgebung bei jedem Systemstart automatisch ein.
Damit sich das Terminalfenster nach Beenden des Scriptes automatisch schließt, muss in den Einstellungen von Terminal unter Einstellungen -> Shell -> Beim Beenden der Shell
die Einstellung auf Fenster schließen
gesetzt werden.