2015-04-06 34 views
0

無法爲調度MacPorts的更新和升級每週比如創建一個有用的腳本AppleScript的爲MacPorts的庫維護

我想在這裏一個小腳本:

on run {input, parameters} 

    do shell script "sudo /opt/local/bin/port selfupdate && sudo /opt/local/bin/port upgrade outdated && sudo /opt/local/bin/port clean --all installed" user name "<username>" password "<password>" with administrator privileges 

    return input 
end run 

,並把這個成的Automator

然後當它運行時,窗口將被凍結,如果在運行過​​程中有任何返回,它將顯示爲異常消息。

你能寫一個有用的腳本來完成任務嗎? 感謝您的幫助!

回答

0

我認爲你最好查看cron實用程序,現在必須明確啓用。對於我所知道的所有內容,您還可以獲得一個名爲Cronnix的實用程序來進行設置。您的另一種選擇是使用Launchctl,這裏有一個名爲Lingon的友好用戶界面,您可以從appstore購買。

從更新MacPorts始終會有一個錯誤日誌,您應該閱讀。另一件事是,當某些軟件包被棄用或者發生了一些衝突時,那麼更新命令確實會要求你通過移動東西來進行交互,所以使用某些東西來更新Macports的方法並不像看起來那麼有利。

如何創建循環日曆事件提醒您這樣做? :)

如果你真的頑強約得到這個工作,那麼你就必須使用做shell腳本具有管理員權限,如果你不喜歡用密碼的對話框,和用戶名,然後就可以將這些硬編碼到您的automator動作中。您將不得不放棄sudo,因爲'擁有管理員權限'可以爲您做到這一點。

 do shell script "your shell script without sudo" user name "hardcodedusername" password "hardcodedpassword" with administrator privileges 
+0

好吧,我只想通過腳本事件學習技術方法。所以關鍵是'return input'會讓程序返回屏幕輸出作爲例外,並且在運行過程中窗口凍結。這可以通過修改我的AppleScript來解決嗎? – HippoMatrix 2015-04-06 15:59:39

+0

我稍微修改了我的答案,添加了必要的具有管理員權限的shell腳本。 AppleScript Action返回的是您在輸入變量返回時定義的內容,它絕不是屏幕,也不是,但您可以使用screencapture返回到捕獲的屏幕截圖的路徑命令行工具。 – McUsr 2015-04-06 18:15:01

+0

「技術方式」是使用launchd(或舊式的cron)直接運行你的shell腳本。更多的東西只是不必要的行李。 – foo 2015-04-06 18:58:05