Applescript с ошибкой (-600) при запуске через ssh на Mavericks

Я пробовал искать это и видел других с похожими проблемами, но, похоже, не нашел ответа нигде....

У меня есть AppleScript, который я пытаюсь запустить поверх ssh, чтобы я мог удаленно управлять своим Mac. Ранее это работало с OSX 10.8, но больше не работает с момента обновления до 10.9.

Команда, которую я выполняю:

ssh <user>@mymac.local "osascript -e 'tell application \"iTunes\" to play'"
  • Я уже установил ключи RSA, поэтому ssh-сессия открывается правильно
  • Я подключаюсь как тот же пользователь, что Mac в настоящее время зарегистрирован и работает под
  • iTunes работает на Mac с этим пользователем во время запуска script

script завершается с ошибкой:

execution error: iTunes got an error: Application isn’t running. (-600)

Аналогично, ряд других скриптов, которые я использовал ранее, также, похоже, теперь разбит на 10.9 с той же ошибкой, поэтому это, похоже, связано с тем, что он работает поверх ssh, а не с проблемой iTunes или конкретное приложение.

Я пробовал упаковывать applescripts как приложения, сохраняя их на удаленном Mac, а затем открывая их из сеанса ssh, но это также терпит неудачу:

ssh <user>@mymac.local
open "~/Desktop/Play Music.app"

(Where 'Play Music.app') - это приложение, экспортированное как приложение).

Это не сообщает об ошибке в сеансе ssh, но на удаленном Mac появляется диалоговое окно applescript: enter image description here

У меня также есть несколько сценариев, которые были запланированы с помощью crontab на моем Mac, и они также не работают с обновления.

Я предполагаю, что это какое-то изменение безопасности как часть Mavericks, но я не могу найти способ заставить его работать снова. Есть ли у кого-нибудь какие-либо решения?

Ответы

Ответ 1

Application isn’t running(-600) - ошибка операционной системы.

Ошибка операционной системы - это ошибка, возникающая, когда AppleScript или приложение запрашивает службы из Mac OS. Они редки, и часто вы ничего не можете сделать с ними в script, кроме сообщите им.

Ответ 2

Arrrrgh! Я не хочу, чтобы это было ответом, но после того, как мы попытались почти все, теперь это похоже на работу после перезагрузки. Думаю, что что-то в appleeventsd запуталось (хотя перезапуск просто appleeventsd сам по себе не сделал) t исправить что-нибудь). После перезапуска osascript, похоже, ведет себя снова. Я все еще не убежден, что это полностью исправлено, но похоже, что он работает на данный момент...

Ответ 4

Apple Script не проблема.

Разрешить доступ для вспомогательных устройств и приложений, открыв Системные настройки > Безопасность и конфиденциальность > Конфиденциальность > Доступность и проверьте приложения, которые вы хотите разрешить доступ.

Дополнительная информация: https://support.apple.com/en-us/HT202866

Якоб Салмела также создал утилиту для этого из командной строки:

http://jacobsalmela.com/os-x-yosemite-enable-access-assistive-devices-command-line/

Ответ 5

для меня это произошло, когда я попытался открыть gitk. Возвращаясь к ветке, в которой я был раньше, и gitk смог снова открыть

Ответ 6

Системные события - это действительно тонкая составляющая OS X. Вот мой способ обойти эту страшную ошибку "Приложение не работает -600":

set app_name to "System Events"
set the_pid to (do shell script "ps ax | grep " & (quoted form of app_name) & "$
if the_pid is not "" then do shell script ("kill -9 " & the_pid)

tell application "System Events"
-- activate  
end tell

Я убиваю "Системные события" с kill -9, а затем перезапускаю его.

Ответ 7

@benmarbles, похоже, что-то не хватает в конце строки 2 - он даже не компилируется.

Во всяком случае, я видел ту же проблему с "Image Events", и я решил ее с упрощенной версией этого script. Вот как я справляюсь с этим:

tell application "System Events" to set thePID to (unix id of process "Image Events")
set killCMD to ("kill -9 " & thePID) as text
do shell script killCMD with administrator privileges

Замените Image Events на System Events, чтобы убить этот процесс. Процесс System Events продолжает оставаться живым, поэтому нет необходимости что-то делать, чтобы перезапустить его.

Ответ 8

Я получил ту же ошибку, когда мне не удалось выполнить сценарии GUI, но изменив Системные настройки > Безопасность и конфиденциальность > Конфиденциальность > Параметры специальных возможностей для этого конкретного приложения и добавив delay 0.5 между каждой строкой, скорректировав его!

Ответ 9

Меня смутило сообщение "для системных событий", которое не работает в новых версиях Mac OS X из командной строки:

osascript -e 'tell application "System Events" to display dialog "Build finished"'

Оказывается, синтаксис Applescript (изменен на?) просто:

osascript -e 'display dialog "Build finished"'

Ответ 10

Привет от 2k19 :) Подход ниже помог мне

tell app "app_name"
    launch
    delay 2
end tell
tell app "app_name"
    do something usefull
end tell

или

osascript -e "tell app \"app_name\"" -e "launch" -e "delay 2"-e "end tell" -e "tell app \"app_name\"" -e "do someting usefull" - e "end tell"