26

我试过搜索这个,并且看到其他人有类似的问题,但似乎在任何地方都没有找到答案......

我有一个 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 对话框: 在此处输入图像描述

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

我认为这是作为 Mavericks 的一部分的某种安全更改,但我似乎无法找到让它再次工作的方法。有没有人对此有任何解决方案?

4

14 回答 14

17

Application isn’t running(-600)操作系统错误

操作系统错误是 AppleScript 或应用程序从 Mac OS 请求服务时发生的错误。它们很少见,而且除了报告它们之外,您通常无法在脚本中对它们做任何事情

于 2013-11-14T09:41:31.267 回答
8

啊!我不希望这是答案,但是在尝试了几乎所有事情之后,现在这似乎在重新启动后起作用了.... t修复任何东西)。重新启动后 osascript 似乎再次表现。我仍然不相信这是完全修复的,但它似乎目前正在工作......

于 2013-11-14T00:01:05.470 回答
7

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

具体来说,

com.apple.security.temporary-exception.apple-events

将其设置为数组

然后添加两个项目。

com.apple.finder

com.apple.iTunes

请参阅:当我将 OS X 升级到 10.9 时,我的 applescript 不再工作

于 2016-11-30T23:32:03.693 回答
4

Apple Script 可能不是问题。辅助设备可能是造成这种情况的原因。

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

于 2015-04-22T17:51:57.387 回答
2

对我来说,这发生在我试图打开gitk. 换回我之前所在的分行,并且gitk能够再次打开

于 2018-06-15T10:16:30.233 回答
2

在我的电脑上,正常运行时间为 162 天,查杀appleeventsd解决了这个问题。我认为 appleeventsd 和 long uptimes 是一个糟糕的组合。

于 2020-10-20T20:24:14.247 回答
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 杀死“系统事件”,然后重新启动它。

于 2014-06-08T23:29:39.413 回答
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 EventsSystem Events终止该进程。系统事件进程保持自身活跃,因此无需执行任何操作来重新启动它。

于 2014-08-20T17:44:26.957 回答
0

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

于 2017-01-13T00:59:23.127 回答
0

我对这条消息“for System Events”在命令行中无法在较新版本的 Mac OS X 中工作感到困惑:

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

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

osascript -e 'display dialog "Build finished"'
于 2018-02-09T19:19:53.827 回答
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"
于 2019-08-15T13:53:29.853 回答
0

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

于 2021-01-04T20:47:26.547 回答
0

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

于 2021-02-16T02:18:01.673 回答
0

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

于 2021-02-26T14:21:06.573 回答