web-dev-qa-db-ja.com

bashスクリプトでユーザー入力をシミュレートする

独自のbashスクリプトを作成していますが、現時点では行き詰っています。基本的に、このスクリプトは、CentOSでのサーバーのセットアップを自動化するために使用されます。一部のソフトウェアは通常、ユーザーにパスワードの入力を求めます。ユーザーに尋ねるのではなく、生成し、変数として保存したパスワードをスクリプトに入れてほしい。

インストール中に「新しいパスワード:」というメッセージが表示された場合、変数に保存された値をスクリプトに格納するにはどうすればよいですか$keyユーザーがbashスクリプトでタイプしたかのように?

46
Werulz

「expect」コマンドは、必要な処理を実行します。その広く利用可能。例についてはこちらをご覧ください: http://www.thegeekstuff.com/2010/10/expect-examples/

(非常に大まかな例)

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

spawn /usr/bin/passwd

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

これが私が書いたスニペットです。ユーザーのパスワードを要求し、/ etc/passwdに設定します。必要なものを取得するために、おそらく少し操作することができます。

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