続行するには、パスワードを入力する必要があるスクリプトがあります。
bash-3.2$ ./script.sh <parameter_list>
Enter the password for the Database:
..
..
私はスクリプトにパスワードを安全に渡しながら、スクリプトの標準出力をログファイルにキャプチャすることに興味があります。
次のように標準入力にパスワードを渡してみました。
bash-3.2$ echo "<password>" > /secure/path/password.txt
bash-3.2$ ./script.sh <parameter_list> < /secure/path/password.txt
しかし、これはうまくいかないようです。その場合は、単にtee
出力をログファイルにリダイレクトできます。
答え1
私の考えでは、あなたがしたいと思いますexpect
。このツールは、ユーザー入力を必要とするコマンドと対話的に機能できます。もちろん、最大の罠は何をすべきかを知るべきだということだ。予想される。
はい(次から借りるhttp://www.thegeekstuff.com/2010/10/expect-examples/)
#!/usr/bin/expect
set timeout 20
spawn "./hello.pl"
expect "hello"
send "no match : <$expect_out(buffer)> \n"
send "match : <$expect_out(0,string)>\n"
interact
答え2
何について
echo "password" | ./script.sh parameter_list ... > output.file
それでも機能しない場合は、次の質問に答えてください。スクリプトはユーザーからパスワードを取得するためにどのようなメカニズムを使用しますか? SSHパスワードのようなものであれば、stdinを介した転送は機能しません。
答え3
これが独自のスクリプトの場合、対話型出力をstderr
。