2010-07-03 4 views
4

J'ai une application Python OS X qui utilise wxPython pour ses contrôles GUI. Je cherche à demander à l'utilisateur des droits d'administration (similaire à l'utilisation de l'API du service d'autorisation dans Objective-C) avant de démarrer un service réseau.Invite d'administrateur de l'interface graphique Python de Mac OS X

La bibliothèque la plus proche que j'ai trouvée est la Authorization library de Bob Ippolito mais elle est relativement obsolète et présente des problèmes de compatibilité avec Snow Leopard (OS X 10.6.4/Python 2.6.4).

Ma solution de contournement serait de créer un lanceur Objective-C qui exécute l'application python avec des droits d'administration, mais qui semble assez kludgy.

Merci pour l'aide!

Répondre

2

Vous pouvez exécuter votre script entier avec des privilèges d'administrateur en le transformant en application native Mac OS X en utilisant Platypus.

5

Si c'est juste une commande shell que vous devez exécuter, demander des privilèges élevés, alors vous pouvez le faire:

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

Il exécutera une commande shell dans l'interpréteur de l'applescript et demandera à l'utilisateur les informations d'identification de son compte; exécuter efficacement la commande en utilisant sudo.

Notez que vous aurez du plaisir à échapper des guillemets dans votre commande, par ex.

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

Hope that helps!

+1

Existe-t-il un moyen de le faire pour que l'utilisateur n'ait qu'à entrer son mot de passe une seule fois? Si j'en ai plusieurs, l'utilisateur doit saisir son mot de passe pour chaque fois qu'il est appelé – Parker