带有Bash SU身份验证的Apple脚本(Automator)

时间:2014-05-29 11:03:23

标签: bash automator

我有一个bash scrips粘贴到"运行shell脚本"在10.9.3下的Automator苹果脚本中执行操作,命令是复制命令dll到系统文件夹/ Library / Audio / Plug-Ins / VST /是只读的。

我需要提示运行脚本的用户输入密码。这是怎么回事?

谢谢!

1 个答案:

答案 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脚本放在&#34;运行Shell脚本&#34;下的Automator中;就像你现在一样,并且复制指令在最后,你可以取出复制指令,然后让它回显用户选择作为最终指令的文件夹。这将返回到下一个Automator操作。在运行Shell脚本之后,使用do shell script命令运行AppleScript,如上面的第一个示例所示,其中包含cp命令,代替/ path / to / yourscript,具有管理员权限。< / p>