Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to start/stop Internet Sharing using AppleScript

Tags:

applescript

I don't have a Wi-Fi router, so when at home I need to turn my laptop into a Wi-Fi source so that both myself and my partner can access the internet.

However during the days I work at a coffee shop and require the use of their Wi-Fi.

I'm running Snow Leopard and I find it stupidly cumbersome to constantly be turning off and on, first Internet Sharing and then my Wi-Fi.

Any ideas for a quick 'n' dirty AppleScript solution?

like image 771
jon Avatar asked Apr 24 '10 15:04

jon


3 Answers

You can use launchctl to programmatically start or stop the Internet Sharing service.

The following AppleScript will start Internet Sharing:

do shell script "/bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.InternetSharing.plist" with administrator privileges

The following AppleScript will stop Internet Sharing:

do shell script "/bin/launchctl unload -w /System/Library/LaunchDaemons/com.apple.InternetSharing.plist" with administrator privileges
like image 119
sakra Avatar answered Nov 09 '22 18:11

sakra


I'm using this AppleScript from Automator so that I can easily use it as a service and give it a keyboard shortcut.

Toggle Internet Sharing:

register_growl()

try
    if isRunning("InternetSharing") then
        do shell script "launchctl unload -w /System/Library/LaunchDaemons/com.apple.InternetSharing.plist" with administrator privileges

        if isRunning("InternetSharing") then
            error "Internet Connection Sharing was Not Disabled"
        else
            my growlnote("Success", "Internet Connection Sharing Disabled")
        end if

    else
        do shell script "launchctl load -w /System/Library/LaunchDaemons/com.apple.InternetSharing.plist" with administrator privileges

        if isRunning("InternetSharing") then
            my growlnote("Success", "Internet Connection Sharing Enabled")
        else
            error "Internet Connection Sharing was Not Enabled"
        end if

    end if

on error errMsg
    my growlnote("Error", errMsg)

end try

on isRunning(processName)
    try
        return 0 < length of (do shell script "ps ax | grep -v grep | grep " & processName)
    on error
        return false
    end try
end isRunning

on register_growl()
    try
        tell application "GrowlHelperApp"
            set the notificationsList to {"Success", "Warning", "Error"}
            register as application "Toggle Internet Connection Sharing" all notifications notificationsList default notifications notificationsList icon of application "Sharing"
        end tell
    end try
end register_growl

on growlnote(growltype, str)
    try
        tell application "GrowlHelperApp"
            notify with name growltype title growltype description str application name "Toggle Internet Connection Sharing"
        end tell
    end try
end growlnote

I am cross-posting this on the Apple stack exchange because the question was asked in both places.

like image 33
Prestaul Avatar answered Nov 09 '22 18:11

Prestaul


Not sure if you are still looking for a solution but... here is an apple script to enable or disable internet sharing

tell application "System Preferences"
    activate
    reveal (pane id "com.apple.preferences.sharing")
end tell

tell application "System Events"
    tell process "System Preferences"
        try
            click checkbox of row 11 of table 1 of scroll area of group 1 of window "Sharing"

            if checkbox of row 11 of table 1 of scroll area of group 1 of window "Sharing" is equal to 1 then
                repeat until sheet of window 1 exists
                    delay 0.5
                end repeat

            end if

            if (sheet of window 1 exists) then
                click button "Start" of sheet of window 1

            end if

            tell application "System Preferences" to quit
            activate (display dialog "Internet Sharing preferences sucessfully flipped")

        on error

            activate
            display dialog "something went wrong in automation but you are probably in the right menu..."
            return false
        end try

    end tell

end tell

I also will post this on the apple stack exchange post.

like image 2
George Avatar answered Nov 09 '22 18:11

George