AirPort deaktivieren wenn Ethernet angeschlossen wurde
Okt 11
Betriebsystem AirPort, Ethernet, OSX, WLAN Keine Kommentare
Im Büro verwende ich mein MacBookPro. Für den Normalbetrieb bin ich im WLAN unterwegs, wenn ich allerdings etwas direkt am Server erledigen will benötige ich ein anderes (internes) Netz. Mittels Ethernet kein Problem. Allerdings ist es bei OSX so das beim verbinden wia Ethernet das Netzwerk über WLAN auch noch aktiviert ist.
Um das abzuschalten habe ich hier einen netten Hinweis gefunden. Ich fasse diesen hier noch schnell auf Deutsch zusammen.
Diesen Code per Copy&Paste in eine neue Datei packen und im Verzeichnis /Library/Scripts/toggleAirport.sh speichern.
-
#!/bin/bash
-
-
function set_airport {
-
-
new_status=$1
-
-
if [ $new_status = "On" ]; then
-
/usr/sbin/networksetup -setairportpower en1 on
-
touch /var/tmp/prev_air_on
-
else
-
/usr/sbin/networksetup -setairportpower en1 off
-
if [ -f "/var/tmp/prev_air_on" ]; then
-
rm /var/tmp/prev_air_on
-
fi
-
fi
-
-
}
-
-
function growl {
-
-
# Checks whether Growl is installed
-
if [ -f "/usr/local/bin/growlnotify" ]; then
-
/usr/local/bin/growlnotify -m "$1" -a "AirPort Utility.app"
-
fi
-
-
}
-
-
# Set default values
-
prev_eth_status="Off"
-
prev_air_status="Off"
-
-
eth_status="Off"
-
-
# Determine previous ethernet status
-
# If file prev_eth_on exists, ethernet was active last time we checked
-
if [ -f "/var/tmp/prev_eth_on" ]; then
-
prev_eth_status="On"
-
fi
-
-
# Determine same for AirPort status
-
# File is prev_air_on
-
if [ -f "/var/tmp/prev_air_on" ]; then
-
prev_air_status="On"
-
fi
-
-
# Check actual current ethernet status
-
if [ "`ifconfig en0 | grep \"status: active\"`" != "" ]; then
-
eth_status="On"
-
fi
-
-
# And actual current AirPort status
-
air_status=`/usr/sbin/networksetup -getairportpower en1 | awk ‘{ print $4 }’`
-
-
# If any change has occured. Run external script (if it exists)
-
if [ "$prev_air_status" != "$air_status" ] || [ "$prev_eth_status" != "$eth_status" ]; then
-
if [ -f "./statusChanged.sh" ]; then
-
"./statusChanged.sh" "$eth_status" "$air_status" &
-
fi
-
fi
-
-
# Determine whether ethernet status changed
-
if [ "$prev_eth_status" != "$eth_status" ]; then
-
-
if [ "$eth_status" = "On" ]; then
-
set_airport "Off"
-
growl "Wired network detected. Turning AirPort off."
-
else
-
set_airport "On"
-
growl "No wired network detected. Turning AirPort on."
-
fi
-
-
# If ethernet did not change
-
else
-
-
# Check whether AirPort status changed
-
# If so it was done manually by user
-
if [ "$prev_air_status" != "$air_status" ]; then
-
set_airport $air_status
-
-
if [ "$air_status" = "On" ]; then
-
growl "AirPort manually turned on."
-
else
-
growl "AirPort manually turned off."
-
fi
-
-
fi
-
-
fi
-
-
# Update ethernet status
-
if [ "$eth_status" == "On" ]; then
-
touch /var/tmp/prev_eth_on
-
else
-
if [ -f "/var/tmp/prev_eth_on" ]; then
-
rm /var/tmp/prev_eth_on
-
fi
-
fi
-
-
exit 0
Anschließend muss eine plist unter /System/Library/LaunchAgents/com.mine.toggleairport.plist erstellt werden. Diese füllt ihr mit folgendem inhalt
-
<?xml version="1.0" encoding="UTF-8"?>
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-
<plist version="1.0">
-
<dict>
-
<key>Label</key>
-
<string>com.asb.toggleairport</string>
-
<key>OnDemand</key>
-
<true/>
-
<key>ProgramArguments</key>
-
<array>
-
<string>/Library/Scripts/toggleAirport.sh</string>
-
</array>
-
<key>WatchPaths</key>
-
<array>
-
<string>/Library/Preferences/SystemConfiguration</string>
-
</array>
-
</dict>
-
</plist>
Wenn nun eine Verbindung zum Ethernet vorhanden ist greift das Skript und schaltet AirPort ab.
RSS
Twitter