通过Python启动新终端来安装软件包

时间:2013-11-17 08:53:27

标签: python linux sudo

我正在编写一个操作系统安全评级工具,它是一个GUI软件,可以检查重要安全组件的可用性,并允许用户使用一个“安装按钮”安装缺少的组件(例如IDS)

我使用Pycharm作为我的IDE。我想通过GUI安装缺少的软件组件,我正在使用以下代码:

os.system("sudo apt-get install snort-mysql")

当用户点击“安装”(通过我创建的GUI)时,将执行上述代码,并且他将能够一如既往地跟进安装。

但是,由于我使用的是IDE,当单击安装按钮时,问题是我无法输入密码,因为我在IDE的跟踪中得到以下内容:

sudo: no tty present and no askpass program specified

Sorry, try again.

我尝试使用gksudo并设法输入密码。但是在安装开始时我得到以下信息:

After this operation, 18.3 MB of additional disk space will be used.

Do you want to continue [Y/n]? Abort.

使用强制y的gksudo会产生gksudo: invalid option -- 'y'

我想知道是否有办法启动单独的终端并从那里开始安装。

1 个答案:

答案 0 :(得分:2)

您可以使用gksudo并将-y选项传递给 apt-get install 而不是gksudo,即。

os.system('sudo "apt-get install snort-mysql"')

os.system("sudo \"apt-get install snort-mysql\"")

您还可以将subprocess.Popen与管道一起使用,以允许您与子流程进行交互。