LINUX.ORG.RU

запись в stdin запускаемой программе не работает

 


0

1

Есть прога на питоне, которая требует от пользователя ввода с клавиатуры ответов на вопросы в духе yes/no. Хочу её автоматизировать вот так:

# plug -i > log.txt 2>&1 <<EOF
y
m
/
y
y
EOF

Первые четыре ответа срабатывают нормально. Пятый - это принятие лицензии. И он не срабатывает. В консоль бесконечно сыплется вопрос «Do you accept the license?». Почему он не срабатывает? Если вводить все ответы с клавиатуры без автоматизации, то всё работает нормально.

★★★

Последнее исправление: former_anonymous (всего исправлений: 1)

Надо лицензию прочитать или хотя бы прокрутить, так в нормальных ОС делают.

ilovewindows ★★★★★
()

expect/python-pexpect ?

at ★★
()

Скорее всего, сбрасывает буфер перед чтением «особо важного» ответа.
Посмотри исходник, если есть причины его не трогать, то можно:
а) Повесить программу на coproc (bash 4).
б) Через expect (потребует tcl).
в) Смоделировать поведение coproc через 'exec n<"...«' и запуск программы в фон.

ABW ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.