通过osascript

时间:2016-11-26 15:15:15

标签: python python-3.x python-3.5 errno osascript

好的,所以当我运行这个命令时:

sudo python3.5 /path/to/my/script.py

执行正常并返回:

  

选择用户:

     
      
  1. 访客
  2.   
  3. 我的用户名

         

    选择需要清理的帐户(输入相应的号码):

  4.   

之后我输入" 2",按回车键,脚本运行良好。

然而,当我跑步时:

osascript -e 'do shell script "python3.5 /Path/to/my/script.py" with administrator privileges'

我得到了预期的弹出屏幕,在其中输入我的sudo密码,但之后它会抛出错误:

  

OSError:[Errno 9]错误的文件描述符(1)需要清理(输入   相应的数字):")

有人对此有任何想法吗?任何帮助将不胜感激!

PS;关于为什么我需要这种方法的一些背景 - >我正在使用一个需要执行myscript.py的预脚本(也是用python编写的)。我的prescript.py 需要管理员权限。但有时,需要调用myscript.py 需要管理权限。由于我不想将我的sudo-password硬编码到我的任何脚本中,我想要一个弹出框询问我。我想,告诉我的pre-script.py在我上面提到的osascript命令上运行subprocess.Popen([])就行了。但是,为此,我首先需要让osascript命令正常工作。

1 个答案:

答案 0 :(得分:0)

啊,所以我自己想出了这个。正如所料,它与特权有关。不知何故,"do shell script"通过其他权限运行,然后只在终端输入命令。终端中的"sudo command"不等于(完全)"do shell script [script] with administrator privileges"

对我而言,修正它的是导航到:

系统偏好设置 - >安全和隐私 - >隐私标签 - >辅助功能

然后将Python.app和Terminal.app拖到该窗口(您可能需要首先通过按下该窗口左下角的小锁来解锁它)。