如何安全地从AppleScript请求所需的密码?

时间:2012-07-13 14:30:00

标签: macos applescript sudo

我有一个运行shell脚本的简单AppleScript(应用程序):

do shell script "sudo killall -TERM java"

因“ sudo no tty present而且没有指定askpass程序”而失败。

这里想要的行为是拥有操作系统X password dialog open(希望提供保存在钥匙串中供将来使用),但是(我猜)我错过了一个告诉脚本的步骤启动必要的“提问者”(令人惊讶的是,默认情况下不会发生)。

tried

do shell script "ssh-askpass Sudo Password | sudo killall -TERM java"

但也会遇到错误。

从AppleScript调用OS X密码拨号的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

确实是首选方法:

do shell script "sudo killall -TERM java" with administrator privileges

正如您所说,这不会让您记住钥匙串中的密码。这是故意的 - 钥匙链旨在使您不必记住服务的密码,而不是打败本地安全策略(这实际上是您正在尝试做的事情。

您可以使用security命令来存储&检索密码(请参阅MacScripter处的讨论和示例代码)。您可以使用Tell application "System Events" to display dialog "Password:" default answer "" with hidden answer提示输入密码,但我不知道如何添加“记住钥匙串”复选框。这也引发了一些安全问题,因为我认为有一种方法可以制定一个安全策略,允许您的脚本在不提示用户确认的情况下访问它而不允许其他脚本进行类似的访问。