在Mavericks上通过ssh启动时,Applescript失败并出现错误(-600)

时间:2013-11-13 15:10:06

标签: macos ssh applescript osx-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上运行

脚本失败,返回:

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"

(其中'Play Music.app')是作为应用程序导出的AppleScript。

这不会在ssh会话中报告错误,但远程mac上会出现一个applescript对话框: enter image description here

我还有几个在我的Mac上使用crontab安排的脚本,这些脚本在升级后也失败了。

我认为这是小牛队的一部分安全变化,但我似乎找不到让它重新运作的方法。有没有人对此有任何解决方案?

14 个答案:

答案 0 :(得分:16)

Application isn’t running(-600)operating system error

  

操作系统错误是AppleScript或Apple时发生的错误   应用程序从Mac OS请求服务。它们很少见,而且   经常在脚本中你无能为力   报告

答案 1 :(得分:7)

Arrrrgh!我不希望这是答案,但在尝试了几乎所有事情后,现在看起来似乎在重启后工作....我的猜测是在appleeventsd中的某些东西感到困惑(尽管重启只是在自己的appleeventsd上没有'解决任何问题)。重启后osascript似乎再次表现。我仍然不相信这是完全固定的,但它似乎确实起作用......

答案 2 :(得分:5)

对我来说,这是Xcode中的Apple Entitlements。

具体地,

<强> com.apple.security.temporary-exception.apple事件

将其设为数组

然后添加两个项目。

<强> com.apple.finder

<强> com.apple.iTunes

请参阅:My applescript doesn't work any more when I upgrade my OS X to 10.9

答案 3 :(得分:3)

Apple Script不是问题。

通过打开系统偏好设置&gt;启用辅助设备和应用程序的访问权限。安全与安全隐私&gt;隐私&gt;辅助功能并检查您要允许访问的应用程序。

更多信息:https://support.apple.com/en-us/HT202866

Jacob Salmela还创建了一个实用程序,可以从命令行执行此操作:

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

答案 4 :(得分:3)

在我的计算机上,正常运行时间为162天,杀死appleeventsd解决了该问题。我认为appleeventsd和较长的正常运行时间是不好的组合。

答案 5 :(得分:0)

系统事件是一个非常挑剔的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杀死“系统事件”,然后重新启动它。

答案 6 :(得分:0)

@benmarbles代码似乎在第2行的末尾遗漏了一些东西 - 它甚至都不会编译。

无论如何,我在“图像事件”中看到了同样的问题,我用该脚本的简化版本解决了它。以下是我处理它的方法:

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以取消该过程。系统事件过程使自己保持活力,因此无需重新启动它。

答案 7 :(得分:0)

当我无法执行GUI脚本时,我遇到了同样的错误,但更改了系统偏好设置&gt;安全与安全隐私&gt;隐私&gt;该特定应用的辅助功能设置,并在每行之间添加delay 0.5更正了它!

答案 8 :(得分:0)

我对此消息感到困惑,因为“系统事件”无法在命令行中使用较新版本的Mac OS X:

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

事实证明Applescript的语法(改为?)只是:

osascript -e 'display dialog "Build finished"'

答案 9 :(得分:0)

对我而言,这是在我尝试打开gitk时发生的。改回我以前的分支,gitk能够再次打开

答案 10 :(得分:0)

你好,从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"

答案 11 :(得分:0)

对于通过打开系统偏好设置 > 安全和隐私 > 隐私 > 辅助功能启用对 AEServer 的访问解决了我的问题

答案 12 :(得分:0)

如果您通过 ssh 以错误的用户身份运行脚本,您也会收到此错误 - 确保您以要编写脚本的用户身份登录。

答案 13 :(得分:0)

我从活动监视器中终止了“系统事件”进程,然后我的 ssh 脚本工作了。结果重新启动了“系统事件”。我猜它只是陷入了混乱状态。