web-dev-qa-db-fra.com

Simuler la saisie de l'utilisateur dans le script bash

Je crée mon propre script bash, mais je suis coincé pour le moment. Fondamentalement, le script serait utilisé pour automatiser la configuration du serveur dans CentOS. Certains logiciels demandent normalement à l'utilisateur de saisir un mot de passe. Je veux que le script mette le mot de passe que j'ai généré et stocké en tant que variable au lieu de demander à l'utilisateur.

Lorsque le message "Nouveau mot de passe:" apparaît pendant l'installation, comment puis-je faire en sorte que le script mette la valeur stockée dans une variable $key _ comme si l'utilisateur l'avait tapé, avec un script bash?

46
Werulz

Vous devriez trouver que la commande 'expect' fera ce dont vous avez besoin. C'est largement disponible. Voir ici pour un exemple: http://www.thegeekstuff.com/2010/10/expect-examples/

(exemple très approximatif)

#!/usr/bin/expect
set pass "mysecret"

spawn /usr/bin/passwd

expect "password: "
send "$pass"
expect "password: "
send "$pass"
51
FreudianSlip

Voici un extrait que j'ai écrit; pour demander le mot de passe des utilisateurs et le définir dans/etc/passwd. Vous pouvez probablement le manipuler un peu pour obtenir ce dont vous avez besoin:

echo -n " Please enter the password for the given user: "
read userPass
useradd $userAcct && echo -e "$userPass\n$userPass\n" | passwd $userAcct > /dev/null 2>&1 && echo " User account has been created." || echo " ERR -- User account creation failed!"
4
kevoroid