2013-05-08 69 views
1

我試圖自動化在OSX中啓動應用程序並在安全代理提示符處輸入管理員密碼的過程。我希望避免使用AppleScript GUI腳本,但是管理提示的根本原因太複雜了,我只是不會去那裏。與osascript GUI命令的bash問題

以下是由OSX管理員在本地運行時完美工作的腳本。 IE瀏覽器。從終端adminaccount# /usr/local/bin/ReasonScript.sh

#/bin/sh 
sudo /usr/bin/osascript <<EOF 
launch application "Reason" 
    tell application "System Events" 
     repeat until (exists window 1 of process "SecurityAgent") 
      delay 0.5 
     end repeat 
     tell window 1 of process "SecurityAgent" 
      tell scroll area 1 of group 1 
       set value of text field 1 to "adminaccount" 
       set value of text field 2 to "adminpassword" 
      end tell 
      click button "OK" of group 2 
     end tell 
    end tell 
EOF 

exit 0 

的問題

我需要執行這個腳本作爲根用戶(不是很大,但我知道它的我們的部署軟件是怎麼做的)。因此,我想它像root# /usr/local/bin/ReasonScript.sh,我得到以下錯誤

105:106: syntax error: Expected 「,」 but found 「"」. (-2741) 

我已經通過腳本走了,但我不是AppleScript的專家,但我找不到這個語法錯誤。但同時我不希望這樣做,因爲ROOT用戶沒有可訪問的GUI,所以也許這是失敗的一部分。

然後我試着從根部承擔本地用戶權限...即root# sudo -u adminaccount /usr/local/bin/ReasonScript.sh

不幸的是我得到以下

shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied 
job-working-directory: error retrieving current directory: getcwd: cannot access parent directories: Permission denied 

一千appologies如果#1是不是這個問題的正確的地方。我很困惑,我不知道如何解決這個問題。它是AppleScript嗎?它是否是osascript?它是BASH還是OSX的管理結構?

我很欣賞我能用這個泡菜得到的所有幫助。

回答

0

從手冊頁:

osascript will look for the script in one of the following three places: 

1. Specified line by line using -e switches on the command line. 

2. Contained in the file specified by the first filename on the command 
     line. This file may be plain text or a compiled script. 

3. Passed in using standard input. This works only if there are no 
     filename arguments; to pass arguments to a STDIN-read script, you 
     must explicitly specify ``-'' for the script name. 

如果你打算使用一個定界符,你將不得不使用第三個選項。否則,您可以使用applescipt文件,也可以使用-e逐行運行它。