2013-02-03 8 views
36

私自身のbashスクリプトを作成していますが、今は止まっています。基本的には、このスクリプトはCentOSのサーバー設定を自動化するために使用されます。いくつかのソフトウェアは通常、ユーザーにパスワードの入力を要求します。スクリプトに、私が生成し、ユーザに尋ねる代わりに変数として保存したパスワードを入れてもらいたい。bashスクリプトでユーザー入力をシミュレートします

インストール中に "New password:"というメッセージが表示されたら、変数$keyに格納されている値を、ユーザーがbashスクリプトを使用して入力したものと同じにするにはどうすればよいですか?

答えて

38

'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" 
+0

はい、私は多くを期待して使用しています! – Napolux

+0

ここでは、 "New password:"が表示されますが、スクリプトはyum(例えばmysqlのようなもの)をインストールしていますが、この特定のケースのコードスニペットを表示することはできますか?あなたが提供したチュートリアルは、ユーザが何かを入力すると予想されるときに使うことができると思われます。 – Werulz

+1

'#!'行を見てください - これはExpectスクリプト*です。それはExpect言語(基本的にはTcl)で書かれています。重要なコマンドは、あなたがやりとりしているコマンドを起動する 'spawn'、特定の文字列を送るのを待つ' expect '、' send '返信を送ることができます。あなたがコントロールをユーザーに戻したいのであれば、' interact'を使ってコントロールを返すことができます。 –

2

は、私は、ユーザーのパスワードを要求し、/ etc/passwdにそれらを設定するには、yスクリプトのために書いたコードの一部です。

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 acount creation failed!" 
+0

あなたは私を間違ってgetttingしています。私はあなたがパスワードを入力する必要があるときに(yumをインストールする)、それは*ユーザに何かを入力させる代わりに$ keyを入力する – Werulz

+0

インストール中に "New Password:"プロンプトが表示されたときと同様に$ keyの値を – Werulz

+0

として設定します。例えば、私は外部プログラムがユーザからの入力を要求するときに値を渡すことを期待していました。 ssh-agentに自分のssh鍵を追加したいときのように、私はパスフレーズをssh-addに自動的に渡します。 – kevoroid

関連する問題