在Linux

时间:2016-07-17 09:11:02

标签: python linux apt-get apt

我正在尝试通过apt-get在Ubuntu Linux中通过Python的子进程模块自动安装tripwire。我遇到的问题是,在安装过程中,Tripwire会提示我进行Postfix邮件配置,通过安装apt-get后出现的不同配置页面(见附图)设置site.key和local.key。

如何使用子流程模块与这些页面进行交互?

from subprocess import *
p=Popen("apt-get install tripwire",stdout=PIPE,stdin=PIPE,stderr=PIPE,shell=True)
p.communicate(input="Y\n") # Y = Yes to confirm installation of the package through apt-get

我尝试使用“stdin = PIPE”,但与这些终端页面进行交互存在一些挑战:

  1. 这些页面在包下载后出现 配置,所以我必须实现某种延迟 要出现的页面

  2. 此外,我需要实现向上和向下箭头键来选择各种选项。

  3. 谢谢

    约翰

    enter image description here

1 个答案:

答案 0 :(得分:1)

启用自动确认和安静模式启动安装并设置this flag

export DEBIAN_FRONTEND=noninteractive

apt-get install -y -q tripwire

这样您就不需要与安装后配置进行通信。 您还可以使用config传递预先存在的-c文件(或使用-o指定配置选项)。

我可能会尝试:

from subprocess import call
p = call(["apt-get", "install", "-y", "-q", "-c", "config.cfg", "tripwire", shell=False])