Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement