Mac OS X Python GUI管理员提示

4
我有一个基于OS X的Python应用程序,使用wxPython进行GUI控制。我想在启动网络服务之前提示用户获取管理员权限(类似于在Objective-C中使用Authorization Service API)。最接近的库是Bob Ippolito的Authorization library,但它已经过时,并且与Snow Leopard(OS X 10.6.4 / Python 2.6.4)存在兼容性问题。
我的解决方法将是创建一个Objective-C启动器,以管理员权限运行Python应用程序,但这感觉相当笨拙。
谢谢帮助!
4个回答

5

如果您只需要运行一个需要提升权限的Shell命令,那么可以这样做:

os.system("""osascript -e 'do shell script "<commands go here>" " with administrator privileges'""")

这将在applescript解释器中运行shell命令,并提示用户输入其帐户凭据;有效地使用sudo运行命令。

请注意,您需要在命令中转义引号,例如:

os.system("""osascript -e 'do shell script "mkdir -m 0775 -p \\"%s\\" " with administrator privileges'"""%d)

希望这能帮到您!

2
有没有办法让用户只需输入一次密码就能完成此操作?如果我有多个这样的操作,用户需要为每次调用输入他们的密码。 - Parker

2

您可以使用Platypus将整个脚本转换为原生的Mac OS X应用程序,以便以管理员权限运行。


1

我找不到Python绑定,但我认为我可以使用ctypes和launchd(8)来实现我想要的功能。谢谢! - Erik Karulf
这也是我的印象。 :) - Eric O. Lebigot

0

以下是如何运行“ls”命令并要求输入密码:

os.system("""
osascript -e 'do shell script "ls"  with administrator privileges'
""")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接