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