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, похоже, ведет себя снова. Я все еще не убежден, что это полностью исправлено, но похоже, что он работает на данный момент...
Ответ 3
Для меня это были права Apple в Xcode.
В частности,
com.apple.security.temporary-exception.apple-события
Задайте его как Массив
Затем добавьте к нему два элемента.
com.apple.finder
com.apple.iTunes
Смотрите: Мой applescript больше не работает при обновлении моей OS X до 10.9
Ответ 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"