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 回答