Как запустить / остановить Internet Sharing с помощью AppleScript - PullRequest
7 голосов
/ 24 апреля 2010

У меня нет маршрутизатора Wi-Fi, поэтому, когда я дома, мне нужно превратить свой ноутбук в источник Wi-Fi, чтобы и я, и мой партнер могли получить доступ к Интернету.

Однако в течение дня я работаю в кафе и требую использовать их Wi-Fi.

У меня работает Snow Leopard, и я считаю, что постоянно отключать и включать сначала глупо, а потом и мой Wi-Fi.

Есть идеи для быстрого и грязного решения AppleScript?

Ответы [ 4 ]

6 голосов
/ 24 апреля 2010

Вы можете использовать launchctl для программного запуска или остановки службы общего доступа к Интернету.

Следующий AppleScript запустит общий доступ к Интернету:

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

Следующий AppleScript остановит общий доступ к Интернету:

do shell script "/bin/launchctl unload -w /System/Library/LaunchDaemons/com.apple.InternetSharing.plist" with administrator privileges
4 голосов
/ 04 января 2011

Я использую этот AppleScript от Automator, чтобы я мог легко использовать его в качестве службы и назначить ему комбинацию клавиш.

Переключение общего доступа в Интернет:

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

Я кросс-пост это на стеке Apple, потому что вопрос был задан в обоих местах.

1 голос
/ 20 января 2011

Не уверен, если вы все еще ищете решение, но ... вот сценарий Apple, чтобы включить или отключить общий доступ к Интернету

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

Я также опубликую это на посте обмена стопками яблок.

0 голосов
/ 05 мая 2019

Вот то, что я придумал для Mojave, чтобы переключать Internet Sharing с использованием (в основном) доступности - к сожалению, ни одно из решений, включающих использование launchctl и / или редактирование com.apple.nat.plist, не сработало для меня.

open location "x-apple.systempreferences:com.apple.preferences.sharing?Internet"
tell application "System Events"
    tell process "System Preferences"
        repeat until window "Sharing" exists
            delay 0.1
        end repeat
        tell window "Sharing"
            set _row to group 1's scroll area 1's table 1's first row whose selected is true
            set _wasSharing to _row's checkbox's value as number
            if _wasSharing is 1 then
                click _row's checkbox
                set _wasSharing to _row's checkbox's value as number
                repeat until _wasSharing is 0
                    delay 0.1
                end repeat
            end if
            if _wasSharing is 0 then
                click _row's checkbox
                repeat until sheet 1 exists
                    delay 0.1
                end repeat
                click sheet 1's button "Start"
            end if
        end tell
    end tell
end tell
tell application "System Preferences" to quit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...