我正在尝试自动执行在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的管理结构。
我很感激能用这种泡菜获得的所有帮助。
答案 0 :(得分: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。
逐行运行