2016-07-17 4 views
1

Я пытаюсь автоматизировать установку tripwire через apt-get через модуль подпроцесса Python в Ubuntu Linux. Проблема заключается в том, что в процессе установки Tripwire запрашивает у меня настройку почты Postfix, устанавливая site.key и local.key через различные настройки страниц конфигурации (см. Прикрепленное изображение), которые появляются после установки apt-get.Автоматическая установка tripwire через python в Linux

Как использовать модуль подпроцесса для взаимодействия с этими страницами?

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. Кроме того, мне нужно реализовать клавиши со стрелками вверх и вниз, чтобы выбрать различные параметры.

Благодаря

Джон

enter image description here

ответ

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]) 
+0

Благодаря Крис ... однако, я все еще получаю диалоговое окно конфигурации натяжные спрашивают меня, я хочу, создать ли сайту ключевую фразу, когда я использую автоматического подтверждения и тихий режим. – John

+0

Хорошо, позвольте мне уточнить ответ. – Chris

+0

Спасибо, Крис ... это определенно работает. Первоначально это не сработало, пока я не понял, что я установил переменную env в неправильном контексте (обычный пользователь, а не root) .... так что я «sudo su» и выполнил команду export. Затем я вышел из su, выполнил команду sudo apt-get (поскольку apt-get обычно устанавливает с помощью имитационного корня) и установил tripwire ..., который работал, не показывая мне никаких интерфейсных экранов терминала ... спасибо. – John

Смежные вопросы