7 votes

Comment démarrer/arrêter le partage d'Internet à l'aide d'AppleScript ?

Je n'ai pas de routeur Wi-Fi, alors quand je suis à la maison, je dois transformer mon ordinateur portable en source Wi-Fi pour que mon partenaire et moi-même puissions accéder à l'internet.

Cependant, pendant la journée, je travaille dans un café et j'ai besoin d'utiliser leur Wi-Fi.

J'utilise Snow Leopard et je trouve qu'il est stupidement encombrant de devoir constamment éteindre et allumer, d'abord le partage d'Internet, puis mon Wi-Fi.

Une idée pour une solution AppleScript rapide et pratique ?

6voto

sakra Points 13373

Vous pouvez utiliser launchctl pour démarrer ou arrêter par programme le service de partage d'Internet.

L'AppleScript suivant démarre le partage d'Internet :

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

L'AppleScript suivant arrêtera le partage d'Internet :

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

4voto

Prestaul Points 31986

J'utilise cet AppleScript à partir d'Automator afin de pouvoir facilement l'utiliser comme un service et lui attribuer un raccourci clavier.

Basculer vers le partage d'Internet :

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

Je suis cross-posting sur l'Apple stack exchange car la question a été posée aux deux endroits.

2voto

George Points 974

Je ne sais pas si vous êtes toujours à la recherche d'une solution, mais voici un script d'Apple qui permet d'activer ou de désactiver le partage d'Internet.

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

Je vais également le publier sur le site de l'échange de piles de pommes.

0voto

Nicholas Riley Points 26161

Voici ce que j'ai trouvé pour Mojave afin d'activer le partage d'Internet en utilisant (principalement) l'accessibilité - malheureusement, aucune des solutions impliquant l'utilisation de launchctl et/ou l'édition com.apple.nat.plist a fonctionné pour moi.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X