Applescript 在 Mavericks 上通过 ssh 启动时失败并出现错误 (-600)
Posted
技术标签:
【中文标题】Applescript 在 Mavericks 上通过 ssh 启动时失败并出现错误 (-600)【英文标题】:Applescript fails with error (-600) when launched over ssh on Mavericks 【发布时间】:2013-11-26 06:14:35 【问题描述】:我试过搜索这个,看到其他人有类似的问题,但似乎在任何地方都没有找到答案....
我有一个 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 的一部分的某种安全更改,但我似乎无法找到让它再次工作的方法。有人对此有任何解决方案吗?
【问题讨论】:
是的 - 正如我在帖子中所说,iTunes 当时是开放的。我假设它与 ssh shell 无法看到该进程有关,即使它使用相同的用户帐户运行... 你能得到一个简单的对话框吗? 如果您在机器本地的终端中运行脚本相同的命令会发生什么 我可以通过 ssh 显示警报。所以这行得通: osascript -e "tell application \"System Events\" to display alert \"Hello\"" 警报出现在远程屏幕上 如果我在机器上本地从终端运行脚本,它也可以正常工作。似乎是通过 ssh 会话运行它,这就是问题 【参考方案1】:Application isn’t running(-600)
是一个operating system error。
操作系统错误是在 AppleScript 或 应用程序从 Mac OS 请求服务。它们很少见,而且 通常在脚本中你无能为力,除了 举报他们。
【讨论】:
哦,可以做一件事:重启机器:) 重启为我清除了这个。非常令人沮丧,但很高兴这个页面存在,所以我们知道尝试这个。谢谢! 当我遇到这个错误时,我确信我可以在活动监视器中看到“系统事件”。等待几分钟,错误就会消失。 我正在尝试开发和调试一个脚本,如果我必须每隔几分钟重新启动一次,因为系统会自行启动,我会非常交叉... 我在使用 Notes 时遇到了同样的问题,在命令行上kill
ing 它对我有用。【参考方案2】:
啊!我不希望这是答案,但是在尝试了几乎所有事情之后,现在这似乎在重新启动后起作用了.... t修复任何东西)。重启后 osascript 似乎再次出现。我仍然不相信这已完全修复,但目前似乎确实有效......
【讨论】:
同意,这就是为什么这不是一个真正的“答案”......我会密切关注它,看看它是否再次中断,然后也许我可以找出是什么打破了它并且希望我们能更接近修复它。 我也想要一个正确的答案——但这确实解决了我的问题,所以我赞成。 :) 这只是在我尝试通过 ssh 调试 Dropbox 应用程序的自发故障时发生的。无法弄清楚如何解决它... 哦,这是 Apple 的另一件非常令人沮丧的事情 :( 我第一次在 2019 年初(1 月中旬)在 High Sierra 10.13.1 上得到这个(升级得更早,绝对没有几个月以来的任何问题)。顺便说一句,这是 VMware Fusion 上的虚拟机,突然我发现它 [VM] 已关闭。我重新打开它并立即开始遇到此问题。访问此页面后,我重新启动了虚拟机清除了一段时间,但今天我又遇到了。然后在几个小时后没有重新启动就清除了。目前正在寻找如何更好地诊断这个问题,因为这很烦人..【参考方案3】:对我来说,这是 Xcode 中的 Apple 权利。
具体来说,
com.apple.security.temporary-exception.apple-events
将其设置为数组
然后添加两个项目。
com.apple.finder
com.apple.iTunes
见:My applescript doesn't work any more when I upgrade my OS X to 10.9
【讨论】:
【参考方案4】:Apple 脚本可能不是问题所在。辅助设备可能是造成这种情况的原因。
打开系统偏好设置>安全和隐私>隐私>辅助功能启用辅助设备和应用程序的访问权限,然后检查您要允许访问的应用程序。
【讨论】:
这绝对是让 Sublime Text 与 Applescript 合作的情况。很高兴我向下滚动到您的答案。【参考方案5】:对我来说,这发生在我尝试打开 gitk
时。改回我之前所在的分支,gitk
又能打开了
【讨论】:
【参考方案6】:在我的计算机上,正常运行时间为 162 天,杀死 appleeventsd
解决了这个问题。我认为 appleeventsd 和 long uptimes 是一个糟糕的组合。
【讨论】:
【参考方案7】:系统事件是 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 杀死“系统事件”,然后重新启动它。
【讨论】:
只是一个后续。这段代码似乎让 applescripts 在本地运行更可靠,但我仍然无法让 osascript 在 SSH 上运行。 osascript 无法与任何活动的应用程序交互,这真让人生气。【参考方案8】:@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
以终止该进程。系统事件进程保持自身活跃,因此无需执行任何操作来重新启动它。
【讨论】:
【参考方案9】:当我无法执行 GUI 脚本时,我遇到了同样的错误,但更改该特定应用的系统偏好设置 > 安全和隐私 > 隐私 > 辅助功能设置并在每行之间添加 delay 0.5
更正它!
【讨论】:
【参考方案10】:我对这条“for System Events”消息在命令行中无法在较新版本的 Mac OS X 中工作感到困惑:
osascript -e 'tell application "System Events" to display dialog "Build finished"'
原来Applescript的语法是(改为?)只是:
osascript -e 'display dialog "Build finished"'
【讨论】:
【参考方案11】:您好,来自 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"
【讨论】:
【参考方案12】:对于我的问题,通过打开系统偏好设置 > 安全和隐私 > 隐私 > 可访问性启用 AEServer 访问来解决我的问题
【讨论】:
【参考方案13】:如果您通过 ssh 以错误用户身份运行脚本,您也会收到此错误 - 请确保您以要编写脚本的同一用户身份登录。
【讨论】:
【参考方案14】:我从活动监视器中终止了“系统事件”进程,然后我的 ssh 脚本开始工作。结果,“系统事件”重新启动。我猜它只是陷入了混乱的状态。
【讨论】:
以上是关于Applescript 在 Mavericks 上通过 ssh 启动时失败并出现错误 (-600)的主要内容,如果未能解决你的问题,请参考以下文章
在 Mavericks (10.9) 上安装 mcrypt 库时遇到问题
Android Studio 无法在 Mac OSX (Mavericks) 上加载 JVM