0

私の perl スクリプトは、いくつかのファイルをダウンロードするためにユーザーにパスワードを要求する必要があります。

print "Your password please: \n";
ReadMode('noecho');
$password = ReadLine(0);
$password =~ s/\n//;
ReadMode(0);

system("wget --user=user --password=\"$password\" http://some.server/data.xml");
do_something();

スクリプトを呼び出すと、$> ./script.plすべて正常に動作します。しかし、出力を でファイルにパイプしたい場合$> ./script.pl > text.txt、パスワードの質問もファイルにパイプされ、ReadLine は機能しなくなります。

これを行う正しい方法は何ですか?

4

2 に答える 2

3

プロンプトを次の宛先に出力しますSTDERR

print STDERR "Your password please: ";
于 2012-06-18T06:32:19.277 に答える
0

キーボードからパスワードを直接読み取ることによるセキュリティ上の利点wgetは、システム上のすべてのユーザーがパスワードを明確に認識できる環境で にシェルを実行することによって無効になります。セキュリティが問題にならない場合は、プログラムを書き直して、ユーザー/パスワードのコマンド ライン パラメータを受け取ることができます。

于 2012-06-18T08:24:59.547 に答える