我有一个bash scrips粘贴到"运行shell脚本"在10.9.3下的Automator苹果脚本中执行操作,命令是复制命令dll到系统文件夹/ Library / Audio / Plug-Ins / VST /是只读的。
我需要提示运行脚本的用户输入密码。这是怎么回事?
谢谢!
答案 0 :(得分:2)
如果它足够短,您可以使用Run AppleScript,并使用:
do shell script "command" with administrator privileges
这将提示用户在GUI中输入管理员用户名和密码,然后运行"命令"作为根。
以下评论更新:
我错过了关于复制到特权文件夹的部分。您不能使用Automator"运行Shell脚本",因为它不支持以管理员身份运行命令(它不是交互式的,所以sudo没有'工作)。因此,有几种不同的方法可以解决问题。
要以管理员身份运行Bash脚本,请将Bash脚本保存为您在终端中运行的典型脚本。在Automator操作选择文件后,使用"运行AppleScript"行动。然后输入下面的代码。您将看不到提示,也没有终端窗口;它会执行。 (如果确实需要提示,可以通过省略user name "username" password "password"
在GUI中获取提示。)用户选择的文件夹将是Bash脚本的参数。
on run {input, parameters}
do shell script ("sudo /path/to/yourscript '" & POSIX path of input & "') ¬
with administrator privileges user name "username" password "password"
end run
另一种方法:终端窗口将打开并显示提示"密码:",用户将输入他们的密码(可能是它的管理员)。然后,您的脚本将以管理员身份运行,并能够复制到特权文件夹中。
on run {input, parameters}
tell application "Terminal"
do script "sudo /path/to/yourscript '" & POSIX path of input & "'"
end tell
end run
或者,如果你真的想把你的Bash脚本放在"运行Shell脚本"下的Automator中;就像你现在一样,并且复制指令在最后,你可以取出复制指令,然后让它回显用户选择作为最终指令的文件夹。这将返回到下一个Automator操作。在运行Shell脚本之后,使用do shell script
命令运行AppleScript,如上面的第一个示例所示,其中包含cp
命令,代替/ path / to / yourscript,具有管理员权限。< / p>