neunzehn83.de

Ein Mann, ein Blog, kein Plan.

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.

Geschrieben am Sonntag, 10. November 2013 und abgelegt unter Allgemein.