我想让我的AppleScript应用程序运行一个sudo
的Python脚本,但我不希望应用程序提示用户输入密码(我们的用户没有sudo权限)。如何在不提示输入密码的情况下通过AppleScript以管理员权限运行shell脚本?
Python脚本已被正确添加到/etc/sudoers
文件中(ALL ALL=NOPASSWD: /path/to/script.py
)。在终端中,我可以做(如常规的非特权用户):
$ sudo ./script.py
和它运转很好。但在AppleScript的,当你尝试做:
do shell script "sudo ./script.py"
当然,你得到了“命令:不存在TTY并没有指定任何askpass程序”的错误。但是,如果将其更改为:
do shell script "./script.py" with administrator privileges
AppleScript坚持提供弹出窗口以询问密码。我也尝试传递一个空密码sudo与管道:
do shell script "echo '' | sudo -S ./script.py"
但这也行不通。 (我认为它试图首先单独运行sudo,然后传递命令,这将不起作用,因为用户没有sudo权限!)
我需要一个解决方案,其中AppleScript将使用sudo运行Python脚本。出于安全原因,我宁愿脚本保持不可读和不可执行,并且只能通过AppleScript执行。 (我知道,假设用户可以拨打sudo script.py
并运行,但假设他们甚至知道sudoers;我试图保持它尽可能安全,同时仍然可用)。
我对AppleScript仍然很陌生,所以任何帮助将不胜感激!谢谢!
我没有意识到'do shell script'在'/'中做了些什么 - 这很好理解!我已经用绝对路径替换了所有路径,现在一切正常。非常感谢! –