web-dev-qa-db-fra.com

Simulation de la touche ENTRÉE dans le script bash

J'ai créé un script bash très simple qui exécute quelques commandes. l'une de ces commandes nécessite la saisie de l'utilisateur pendant l'exécution. c’est-à-dire qu’il demande à l’utilisateur "voulez-vous bla bla bla?", je veux simplement envoyer un appui sur cette touche pour que le script soit complètement automatisé.

Je n'aurai pas à attendre l'entrée ou quoi que ce soit pendant l'exécution, il suffit d'envoyer la touche et le tampon d'entrée gérera le reste.

83
tobbr
echo -ne '\n' | <yourfinecommandhere>

ou profiter de la nouvelle ligne implicite générée par l'écho (merci Marcin)

echo | <yourfinecommandhere>

Maintenant, nous pouvons simplement utiliser le --sk option:

--sk, --skip-keypress N'attendez pas une frappe après chaque test

c'est à dire. Sudo rkhunter --sk --checkall

120
Tilman Vogel

Vous pourriez trouver utile la commande yes.

Voir man yes

38
pavium

Vous pouvez simplement utiliser oui .

# yes "" | someCommand
27
David Hamner

Voici un exemple d'utilisation utilisant expect:

#!/usr/bin/expect
set timeout 360
spawn my_command # Replace with your command.
expect "Do you want to continue?" { send "\r" }

Vérifier: man expect pour plus d'informations.

21
kenorb

Vous pouvez utiliser expect ( man expect est fourni avec des exemples).

11
barti_ddu