linux - Python script not waiting for user input when ran from piped bash script -
i building interactive installer using nifty command line:
curl -l http://install.example.com | bash
the bash script rapidly delegates python script:
# file: install.sh [...] echo "-=- welcome -=-" [...] /usr/bin/env python3 deploy_p3k.py
and python script prompts user input:
# file: deploy_py3k.py [...] input('====> confirm or enter installation directory [/srv/vhosts/project]: ') [...] input('====> confirm installation [y/n]: ') [...]
problem: because python script ran bash script being pipe
d curl, when prompt comes up, automatically "skipped" , ends so:
$ curl -l http://install.example.com | bash -=- welcome ! -=- have detected have python3 installed. ====> confirm or enter installation directory [/srv/vhosts/project]: ====> confirm installation [y/n]: installation aborted.
as can see, script doesn't wait user input, because of pipe ties input curl
output. thus, have following problem:
curl [stdout]=>[stdin] bash (which executes python script) = [stdin] of python script [stdout] of curl (which contains @ eof) !
how can keep useful , short command line (curl -l http://install.example.com | bash
) , still able prompt user input ? should somehow detach stdin of python curl didn't find how it.
thanks !
things have tried:
- starting python script in subshell:
$(/usr/bin/env python3 deploy.py)
you can redirect standard input controlling tty, assuming there one:
/usr/bin/env python3 deploy_p3k.py < /dev/tty
or
/usr/bin/env python3 deploy_p3k.py <&1
Comments
Post a Comment