我正在尝试自动化在 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 的管理结构。
我很感激我能用这个泡菜得到的所有帮助。