2010-04-24 5 views
7

Je n'ai pas de routeur Wi-Fi, donc quand je suis à la maison, je dois transformer mon ordinateur portable en une source Wi-Fi pour que moi et mon partenaire puissent accéder à Internet .Comment démarrer/arrêter le partage Internet en utilisant AppleScript

Cependant, pendant les jours je travaille dans un café et exige l'utilisation de leur Wi-Fi. Je cours Snow Leopard et je trouve qu'il est stupide d'allumer et d'éteindre constamment, d'abord le partage Internet, puis mon Wi-Fi.

Des idées pour une solution AppleScript rapide et sale?

Répondre

6

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

Le AppleScript suivant commencera Partage Internet:

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

Le AppleScript suivant arrêtera le partage Internet:

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

J'utilise ce AppleScript de Automator pour que je puisse facilement l'utiliser comme un service et lui donner un raccourci clavier.

Bascule Partage 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 ce sur l'échange de la pile d'Apple, car on a posé la question dans les deux endroits.

+0

+1 pour une solution sophistiquée, mais facile à utiliser! Merci! – pille

1

Je ne sais pas si vous cherchez toujours une solution, mais ... voici un script Apple pour activer ou 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 aussi poster ceci sur le poste d'échange de la pile de pommes.