AppleScript에서 OSX 방화벽의 수신 연결 허용 버튼을 자동으로 누릅니다.

3715 단어 AppleScript
OSX Mavericks가 되고 나서인지, 차 rぇs. 아 p 를 시작할 때마다 다음과 같은 방화벽의 확인 다이얼로그가 나오게 되었다.


AppleScript 등으로 Charles에서의 로그취소 등 자동화를 하는데 있어서, 허가 버튼을 자동적으로 누를 필요가 있었으므로 조사했다. 다음과 같은 AppleScript를 쓰면 대화 상자의 텍스트에 "Charles.app"가 있을 때만 허가 버튼을 누를 수 있다.

구체적으로는, 이 다이얼로그는 UserNotificationCenter라고 하는 프로세스가 표시하고 있는 것 같기 때문에, 그 프로세스에 대해서 AppleScript를 실행하고 있다.
tell application "System Events"
  -- ダイアログはUserNotificationCenterプロセスが表示しているので、まずはUserNotificationCenterプロセスの有無を確認
  if "UserNotificationCenter" is in (get name of processes whose background only is true) then
    tell process "UserNotificationCenter"
      tell window 1
        -- first static textは『アプリケーション"Charles.app"へのネットワーク……』という文字列を保持している
        if value of first static text contains "Charles.app" then
          click button "許可"
        end if
      end tell
    end tell
  end if
end tell

구현에 있어서, 이하의 사이트를 참고로 했다.
  • Apple Script to dismiss UPS 경고
  • AppleScript의 구조를 잘 살펴보기
  • 좋은 웹페이지 즐겨찾기