2016-07-17 8 views
1

우분투 리눅스에서 파이썬의 서브 프로세스 모듈을 통해 apt-get을 통해 tripwire를 자동 설치하려고합니다. 내가 가지고있는 문제는 설치 과정에서 Tripwire가 apt-get을 설치 한 후에 나타나는 다른 구성 페이지 세트 (그림 참조)를 통해 site.key 및 local.key를 설정하여 Postfix 메일 구성을 요청한다는 것입니다.리눅스에서 파이썬을 통한 tripwire 설치 자동화하기

하위 프로세스 모듈을 사용하여 이러한 페이지와 상호 작용하는 방법은 무엇입니까?

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 

나는 "표준 입력 = PIPE"를 사용하려고하지만, 문제의 부부는이 터미널 페이지와 상호 작용에있다 : 패키지가 다운로드되고 인 후

  1. 이 페이지가 나타납니다 구성되어 있으므로 페이지가 표시되기까지 약간의 지연을 구현해야합니다.

  2. 또한 다양한 옵션을 선택하려면 위아래 화살표 키를 구현해야합니다.

감사

enter image description here

답변

1

시작 자동 확인 및 활성화 자동 모드로 설치하고 this flag 설정 :

export DEBIAN_FRONTEND=noninteractive

이렇게하면 설치 후 구성과 통신 할 필요가 없습니다. 과 함께 구성 옵션을 지정하면 과 함께 파일을 미리 내보낼 수도 있습니다. config

아마 시도 할 것이다 :

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

감사 크리스 ...하지만 난 아직도 내가 자동 확인 및 자동 모드를 사용하면 사이트에게 키 암호를 만들 것인지 나 한테 물어 인계 철선 구성 대화 상자를 얻을. – John

+0

자, 답변을 업데이트하겠습니다. – Chris

+0

고마워, 크리스 ... 이건 분명히 효과가있다. 처음에는 잘못된 컨텍스트 (루트가 아닌 일반 사용자)에서 env 변수를 설정했음을 깨달을 때까지 작동하지 않았습니다 .... 그래서 "sudo su"를 실행하고 export 명령을 실행했습니다. 그런 다음 su를 종료하고 sudo apt-get 명령 (일반적으로 apt-get은 root를 모방하여 설치 함)을 실행하고 트립 와이어를 설치합니다 ... 그러면 프론트 엔드 터미널 화면을 보여주지 않고 ... 감사합니다. – John