Nicolas
Янв. 25, 2016 18:06:07
Здравствуйте. Работаю с терминалом при помощи subprocess. Внутри Докера крутятся определённые процессы, в частности, mininet. Войти в мининет и работать уже в нем, выполняется командой docker attach mininet. К сожалению, это не порождение нового процесса, поэтому переключится в него полностью автоматически не получается (вручную если: docker attach mininet и ещё раз Enter и только тогда “проваливаемся” в мининет.).
Собственно вопрошаю знатоков: как перейти в процесс внутри докера и дальше выполнять посредством скрипта дальнейшие команды?
JOHN_16
Янв. 25, 2016 23:13:56
я конечно сейчас очень сильно предположу попробовать на стандартный вход передать что то типа ‘\r\n’ или просто ‘\n’. В зависимости от того как работает дочерняя программа это либо сработает либо нет:)
p = subprocess.Popen(..., stdin=subprocess.PIPE, ... )
p.stdin.write('\n')
Nicolas
Янв. 26, 2016 09:13:59
JOHN_16
я конечно сейчас очень сильно предположу попробовать на стандартный вход передать что то типа ‘\r\n’ или просто ‘\n’. В зависимости от того как работает дочерняя программа это либо сработает либо нет
Спасибо, я простые варианты пробовал в принципе. Такая конструкция приводит к ошибке: ValueError: I/O operation on closed file. В принципе через Пайп попытка работать и выполнить команду приводит к ошибке “cannot enable tty mode on non tty input”. А вот без изысков subprocess.call() работает без ошибок, но толку мало, так как нужно дополнительно вручную сигнал энтер посылать.
JOHN_16
Янв. 27, 2016 07:27:19
А может попробовать с модулями типа
docker-py работать?