1

我对所有这些编程的东西都很陌生,但试图学习。我已经取得了中等的成功,但觉得它比意向更偶然。我非常感谢帮助学习和理解AppleScript,特别是网络,自动化和编程。使用AppleScript控制远程mac时的访问麻烦

下面是环境:几乎所有的Apple都带有两个Minis,一对笔记本电脑和各种iOS设备,包括AppleTV。该网络由一台Apple Airport Extreme和一台旧的D-Link交换机组成,该交换机是在工作时从回收站中获得的(经过许可)。还有三台Foscam Wi-Fi摄像机。其中一款Mini(名为Dora)充当运行Yosemite的文件服务器,OS X Server应用程序使用不断增长的用于媒体存储的RAID 1阵列。

我想什么,能够做的是运行从我的笔记本电脑单一的AppleScript(亚当的MacBook),其执行以下操作:

  1. 发动对亚当的MacBook
  2. 改变“应用iCamSource需要密码才能唤醒”真亚当的MacBook
  3. 亚当的MacBook退出iTunes,如果它的运行
  4. 启动当前屏幕保护程序锁定亚当的MacBook
  5. 退出iTun多拉ES,如果它的运行
  6. 多拉启动当前屏幕保护程序,如果它尚未运行,从而锁定多拉

我也想对亚当的MacBook一个脚本,逆转这些行动。

我已经能够启动iCamSource,将“需要密码唤醒”设置为true,并启动亚当的Macbook上的ScreenSaver,并使用大量的Google-Fu,试验和错误以及相当多的挫败感。如果它正在运行,我还没有试图退出iTunes。这是一个新想法/要求,但我认为应该很简单地添加到正在运行的脚本中。

我遇到麻烦的地方是从Adam的Macbook上的脚本控制Dora。我运行访问错误(一般为905927)大约有一半到三分之二的时间运行脚本。我试过了我通过谷歌搜索找到的每种语法选项和很多语法组合,但这是最多(但仍然不一致)成功的语法选项。

set remoteMachine to "eppc://remoteMachineadam:[email protected]" 
tell application "iTunes" of machine remoteMachine 
    quit 
end tell 

当阅读各种文章,解释如何做到这一点,有时脚本使用eppc,其他人使用epps,我还没有看到有任何一个一致的结果。有些文章使用远程机器的实际IP地址,有些使用[email protected],因此语法为[email protected]。其结果似乎也不一致。

这似乎是一个非常基本的任务,我发现很多文章都是这样做的,但是他们的方法在我的环境中不起作用。我读过的很多文章都比较陈旧,所以语法可能会过时。我有点害羞,但觉得我应该能够做到这一点。你们都可以提供的任何帮助将非常感激。

更新 - 除了控制远程机器,我在昨天晚上在所有方面都有脚本工作。今天早上,我试图打开“离开”脚本再次解决远程控制问题,我得到一个语法错误无法验证用户消息,脚本不会编译。代码如下:
tell application "System Events" try tell application "iTunes" to quit end try try tell application "iTunes" of machine "eppc://Dora.local" to quit end try tell security preferences set require password to wake to true tell application "iCamSource" to activate tell application "System Events" to start current screen saver end tell end tell

“离开”和“家”脚本从AppleScript菜单运行。当我运行“离开”脚本后解锁屏幕保护程序时,出现一个对话框,提示“连接到服务器时出现问题”Dora's Airport Extreme。该共享在服务器上不存在。请检查共享名称,然后重试。“我开始认为我可能在一台或多台计算机上发生了权限错误,或者如果还有其他问题导致脚本不一致,请执行以下操作:

感谢所有帮助迄今为止!

UPDATE好,似乎有与iPhoto问题,屏幕保护程序的网络硬盘驱动器上的文件进行交互。打开iPhoto中,慢慢地打开每个图像,并重新连接那些已经失去了他们的位置似乎已经解决了这个问题,我仍然遇到访问错误代码905.为了排除这个过程,我将脚本剥离为一项任务,在名为“Dora”的远程计算机上退出iTunes,在这里E码:

set Dora to "epps://adam:[email protected]" try tell application "iTunes" of machine Dora to quit end try

这里的事件日志中运行该脚本生成:

tell application "iTunes" of machine "eppc://epps/adam%253kslajdlll%4010.0.1.2.local" quit --> error number -905 end tell

是否有可能/可能被错误配置的OS X Server应用程序,并阻止脚本从控制远程机器?任何其他的想法或事情要尝试?

谢谢!

更新2
在远程计算机上运行的OS X Server应用程序的组部分,我发现有一个叫Apple Remote遥控器活动ACL组。当我点击编辑按钮查看它的设置时,我看到实际帐户名称是“com.apple.access_remote_ae-disabled”。我想知道这是否告诉了我们什么。我搜索了几个图书馆“com.apple.access”,认为它可能是可以编辑的东西,但什么都没发现。我是该组的成员。我尝试从组中删除自己,并尝试脚本,结果没有任何变化,所以我加入了自己。

更新3
建议我试图从等式中消除OSX服务器。为此,我将尝试在另一台名为Office Mini的计算机上启动TextEdit(因为它比iTunes启动速度快),这种计算机没有服务器应用程序。这里的脚本:
set OfficeMini to "eppc://10.0.1.196"
try
tell application "System Events" of machine OfficeMini
open "/Applications/TextEdit.app"
end tell
end try

当我运行脚本最初我有两个对话框要求输入用户名和密码。我提供了它们并选中了“保存在钥匙串中”复选框。该脚本没有打开TextEdit,但我没有收到访问错误。我得到不同的错误,但是,-600或-10010取决于我是否使用系统事件或Finder。使用此页上的列表:Nicholas Reilingh AppleScript Error Codes我发现使用系统事件时,我得到一个错误-600,这意味着应用程序没有运行。这并不奇怪,我试图打开它。当我使用Finder而不是系统事件时,我得到一个错误-10010,列表指出这是“Handler无法处理这个类的对象。”所以,有进展,但我仍然难倒。

UPDATE 4为了进一步阐明/简化,我试着运行一个简单的脚本,在该机器上的本地Office Mini上打开iTunes,并且它工作正常。
tell application "iTunes" to activate
将“quit”替换为“activate”,并尝试使用这种语法与几个不同的应用程序都工作得很好,速度非常快。我在Dora机器上尝试了相同的脚本和变体,并获得了相同的成功结果。

然后我试图使该语法与此代码远程工作:
set OfficeMini to "eppc://10.0.1.196"
tell application "iTunes" of machine OfficeMini to quit

我在事件日志中此错误消息:
tell application "iTunes" of machine "eppc://10.0.1.196" quit --> error number -927 Result: error "iTunes got an error: Unable to authenticate user." number -927

所以,既然OSX Server未运行在Office Mini上,这似乎消除了作为错误的罪魁祸首。我试着改变了我在网上看到的另一个变体的代码,该变体使用“epp​​s”代替“eppc”,这会导致类似的错误消息:“iTunes出错:远程访问不被允许。”号码-905。我没有得到请求凭证的对话框。当我看到在线使用的“epps”字符串时,它被格式化为“epps:// username:password @ location”,因此我使用了“epps:// adam:[email protected]”,并收到相同的错误消息。我甚至用“亚当”代替“亚当”,结果没有变化。

回答

0

是的,第1步是尽量让脚本尽可能简单以缩小故障点。

我抄你的最小脚本到我的机器&得到它的工作:

set Dora to "minipuppy.local" 
try 
    tell application "iTunes" of machine Dora to quit 
end try 

的几个注意事项:

  • 我用 “minipuppy.local”(卓悦LINKLOCAL名称),而比你的eppc的东西,因为我知道前者是什么,但不是后者。 (您可以从共享首选项面板*获取链接本地名称,其中显示“本地网络上的计算机可以访问您的计算机:XXXXX”
  • 弹出一个身份验证对话框,指出我需要输入用户名和密码目标机器 - 但它没有有 对话框中的eppc地址(我没有截图:-())
  • 输入用户名/密码后,我的脚本什么也没做。有趣的是,我无法得到它打印出你的日志?
  • 我通过转到目标Mac的系统偏好设置&在共享面板中启用“远程Apple事件”来解决此问题。打开后,我的脚本工作。

我希望启用“远程Apple事件”是您的简化问题的最终解决方案。

* Apple菜单 - >系统偏好设置 - >共享

+0

感谢您的关注和帮助。我按照你写的脚本尝试了脚本,替换了合适的机器名称。奇怪的是,我没有验证对话框弹出。我还得到了一个新的错误号-927。以下是响应:告诉机器“eppc:// Dora”的应用程序“iTunes”。本地” \t退出 \t \t - >错误号-927 结束告诉我还检查了远程Apple事件,它是让我也已经启用了远程管理,我会继续研究在服务器应用程序,因为它也有。广泛的访问控制内置到它。任何其他帮助将不胜感激。:-) – Faramir66103

+0

你可以使两个Mac之间的工作只是运行Mac OS X(不是服务器)? – WonderMonster

+0

它可以在不同的Mac上工作。 – Faramir66103