194 votes

Comment puis-je script une réponse "oui" pour l'installation de programmes ?

Je travaille avec des instances Amazon Linux et j'ai quelques scripts pour remplir les données et installer tous les programmes avec lesquels je travaille, mais certains de ces programmes me le demandent :

Do you want to continue [Y/n]?

et mettre en pause l'installation. Je veux répondre automatiquement "Y" dans tous les cas, mais je ne sais pas comment faire.

329voto

P.T. Points 12158

Le site 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

Si vous voulez passer 'N', vous pouvez toujours utiliser yes :

yes N | command-that-asks-for-input

98voto

Dennis Points 6145

echo y | command devrait fonctionner.

De plus, certains installateurs ont un drapeau "auto-yes". C'est -y pour apt-get sur Ubuntu.

21voto

Nathan Basanese Points 2714

Il se peut que vous n'ayez pas la possibilité d'installer Expect sur le serveur cible. C'est souvent le cas lorsqu'on écrit, par exemple, un travail Jenkins.

Si c'est le cas, j'envisagerais 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 n'exige pas que l'utilisateur appuie sur la touche Entrée après le caractère. Dans ce cas, ne tenez pas compte des nouvelles lignes :

printf 'yyy' | ./script_that_needs_user_input

Par souci d'exhaustivité, vous pouvez également utiliser un document ici :

./script_that_needs_user_input << EOF
y
y
y
EOF

Ou si votre shell le supporte, une chaîne ici :

./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.

14voto

Rohan Seth Points 664

Vous devez juste mettre -y avec la commande install.

Par exemple : yum install <package_to_install> -y

7voto

Adam Batkin Points 20920

Bien que cela puisse être plus compliqué/plus lourd que vous ne le souhaitez, une façon très flexible de le faire est d'utiliser quelque chose comme Attendez-vous à (ou l'un de ses dérivés dans un autre langage de programmation).

Expect est un langage conçu spécifiquement pour contrôler les applications basées sur le texte, ce qui est exactement ce que vous cherchez à faire. Si vous avez besoin de faire quelque chose de plus compliqué (comme de la logique pour décider ce qu'il faut faire/répondre ensuite), Expect est la solution.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X