Piping data to Linux program which expects a TTY (terminal)
You can use socat
for this: echo your stdin strings | socat EXEC:"your_program",pty STDIO >/stdout_file
For example with bash
: echo ls | socat EXEC:'bash',pty STDIO >/tmp/ls_out
Or as described here, for a program run with docker
:
# Run the docker task, here bash, in backgrounddocker run -it --rm --name test ubuntu &# Send "ls -la" to the bash running inside dockerecho 'ls -la' | socat EXEC:'docker attach test',pty STDIN# Show the resultdocker logs test