1

我正在尝试自动化在 OSX 中启动应用程序并在安全代理提示符处键入管理员密码的过程。我希望避免使用 AppleScript GUI 脚本,但是管理员提示的根本原因是如此复杂和复杂,我只是不会去那里。

以下是由 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 用户身份执行这个脚本(我知道这不是很好,但它是我们的部署软件如何做到的)。所以我尝试一下root# /usr/local/bin/ReasonScript.sh,我收到以下错误

105:106: syntax error: Expected “,” but found “"”. (-2741)

我已经浏览了脚本,但我不是 AppleScript 专家,但我找不到这个语法错误。但与此同时,我不希望这会起作用,因为 ROOT 用户没有可以访问的 GUI,所以这可能是失败的一部分。

然后我尝试从root假设本地用户权限......即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

如果 Stackoverflow 不是这个问题的正确位置,一千个应用程序。我很困惑,我不知道如何进一步解决这个问题。是 AppleScript、osascript、BASH 还是 OSX 的管理结构。

我很感激我能用这个泡菜得到的所有帮助。

4

1 回答 1

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.

如果要使用heredoc,则必须使用第三个选项。否则,您可以拥有一个 applescipt 文件或使用 -e 逐行运行它。

于 2013-05-12T16:35:09.513 回答