This is a bash script that will automatically turn your wifi off if you connect your computer to an ethernet connection and turn wifi back on when you unplug your ethernet cable/adapter. If you decide to turn wifi on for whatever reason, it will remember that choice. This was improvised from this mac hint to work with Yosemite, and without hard-coding the adapter names. It's supposed to support growl, but I didn't check that part. I did, however, add OSX notification center support. Feel free to fork and fix any issues you encounter.
Most the credit for these changes go to Dave Holland.
This script was initially developed by Albert Bori. It was forked by Gary Mayden who added an automatic install script and modified the ethernet_names sed regular expression
My contribution is generalizing the ethernet_names sed regular expression to return any device that natches the pattern 'en.' and to handle the existence of duplicate Wi-Fi interfaces on the same device.
- Mac OSX 10+
- Administrator privileges
- Copy
installToggle.sh
to a suitable local location such as (i.e. /tmp) - Run
sudo installToggle.sh
- Copy
toggleAirport.sh
to/Library/Scripts/
- Run
chmod 755 /Library/Scripts/toggleAirport.sh
- Copy
com.mine.toggleairport.plist
to/Library/LaunchAgents/
- Run
chmod 600 /Library/LaunchAgents/com.mine.toggleairport.plist
- Run
sudo launchctl load /Library/LaunchAgents/com.mine.toggleairport.plist
to start the watcher
- Run
sudo launchctl unload /Library/LaunchAgents/com.mine.toggleairport.plist
to stop the watcher - Delete
/Library/Scripts/toggleAirport.sh
- Delete
/Library/LaunchAgents/com.mine.toggleairport.plist
- Delete
/private/var/tmp/prev_eth_on
- Delete
/private/var/tmp/prev_air_on
To debug, just run: sudo /Library/Scripts/toggleAirport.sh
and add echo's wherever you'd like
I do not receive an Apple Notification when a change is made. I suspect this is because the script is executed by the super-user and not as the logged in user. When I run the script sudoed to root (sudo -i), I do receive the notification. I am guessing that this is because of root being my effective UID while my login account is the actual UID. I do not have time at the present to investigate.