Je travaille avec des instances Amazon Linux et j'ai quelques scripts pour renseigner des données et installer tous les programmes avec lesquels je travaille, mais quelques-uns des programmes demandent:
Do you want to continue [Y/n]?
et mettre en pause l'installation. Je veux répondre automatiquement "Y" dans tous les cas, je sais maintenant comment le faire.
Le commande 'oui' fera écho 'y' (ou ce que vous lui demandez) indéfiniment. Utilisez-le comme:
yes | command-that-asks-for-input
ou, si un "Y" majuscule est requis:
yes Y | command-that-asks-for-input
echo y | command
devrait marcher.
En outre, certains installateurs ont un indicateur "auto-yes". C'est -y
pour apt-get
sur Ubuntu.
Il est possible que vous ne puissiez pas installer Expect sur le serveur cible. C'est souvent le cas quand on écrit, par exemple, un travail de Jenkins.
Si oui, je considérerais quelque chose comme la réponse à la question suivante sur askubuntu.com:
https://askubuntu.com/questions/338857/automatically-enter-input-in-command-line
printf 'y\nyes\nno\nmaybe\n' | ./script_that_needs_user_input
Notez que dans certains cas rares, la commande ne nécessite pas que l'utilisateur appuie sur Entrée après le caractère. dans ce cas, laissez les nouvelles lignes:
printf 'yyy' | ./script_that_needs_user_input
Par souci d’exhaustivité, vous pouvez également utiliser un document here:
./script_that_needs_user_input << EOF
y
y
y
EOF
Ou si votre shell supporte une chaîne here:
./script <<< "y
y
y
"
Ou vous pouvez créer un fichier avec une entrée par ligne:
./script < inputfile
Encore une fois, tout le mérite de cette réponse revient à l'auteur de la réponse sur askubuntu.com , lesmana.
Bien que cela puisse être plus compliqué/plus lourd que vous ne le souhaitez, une méthode très flexible consiste à utiliser quelque chose comme Expect (ou l’un des dérivés dans un autre langage de programmation).
Expect est un langage spécialement conçu pour contrôler les applications à base de texte. C'est exactement ce que vous cherchez à faire. Si vous devez faire quelque chose de plus compliqué (comme avec la logique pour décider quoi faire/répondre ensuite), Expect est la voie à suivre.
Si vous voulez simplement accepter les valeurs par défaut, vous pouvez utiliser:
\n | ./Shell_being_run
Vous avez juste besoin de mettre -y
avec la commande install.
Par exemple: yum install <package_to_install> -y