我有一个OS X Python应用程序,它使用wxPython来实现它的GUI控件。我想在启动网络服务之前提示用户提供管理权限(类似于在Objective-C中使用授权服务API)。
我找到的最近的图书馆是Bob Ippolito的Authorization library,但它已经过时,并且与Snow Leopard(OS X 10.6.4 / Python 2.6.4)存在兼容性问题。
我的解决方法是创建一个Objective-C启动程序,它运行具有管理权限的python应用程序,但感觉相当糟糕。
感谢您的帮助!
答案 0 :(得分: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)
希望有所帮助!
答案 1 :(得分:2)
您可以使用管理员权限运行整个脚本,方法是使用Platypus将其置于本机Mac OS X应用程序中。
答案 2 :(得分:1)
您可能需要查看此处发布的其他问题的答案:What kind of API should I use to elevate user privilege to super-user in a Mac OS X?
答案 3 :(得分:0)
这里是如何运行“ls”命令并询问密码
os.system("""
osascript -e 'do shell script "ls" with administrator privileges'
""")