Potresti non avere la possibilità di installare Expect sul server di destinazione. Questo è spesso il caso quando si scrive, diciamo, un lavoro Jenkins.
In tal caso, prenderei in considerazione qualcosa come la risposta a quanto segue su askubuntu.com:
https://askubuntu.com/questions/338857/automatically-enter-input-in-command-line
printf 'y\nyes\nno\nmaybe\n' | ./script_that_needs_user_input
Si noti che in alcuni rari casi il comando non richiede all'utente di premere Invio dopo il carattere. in tal caso tralasciare le nuove righe:
printf 'yyy' | ./script_that_needs_user_input
Per completezza puoi anche utilizzare un documento here:
./script_that_needs_user_input << EOF
y
y
y
EOF
Oppure, se la tua shell lo supporta, una stringa here:
./script <<< "y
y
y
"
Oppure puoi creare un file con un input per riga:
./script < inputfile
Ancora una volta, tutto il merito di questa risposta va all'autore della risposta su askubuntu.com, lesmana.
echo y | command
dovrebbe funzionare.
Inoltre, alcuni programmi di installazione hanno un flag "auto-yes". È -y
per apt-get
su Ubuntu.
Il comando 'yes' farà eco a 'y' (o qualunque cosa tu gli chieda) indefinitamente. Usalo come:
yes | command-that-asks-for-input
oppure, se è richiesta la 'Y' maiuscola:
yes Y | command-that-asks-for-input
Se vuoi passare 'N' puoi ancora usare yes
:
yes N | command-that-asks-for-input