我正在编写一个操作系统安全评级工具,它是一个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'
我想知道是否有办法启动单独的终端并从那里开始安装。
答案 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与管道一起使用,以允许您与子流程进行交互。