从Perl脚本在命令行上运行需要密码的程序

时间:2012-10-11 09:22:23

标签: perl bash

我在shell脚本周围编写了一个Perl包装器。我正在使用IPC :: Run :: Simple来执行系统命令。举个例子:

run ("mkdir ~$usr/12.2.0_cp/faiz_cpv/$pdate") or die "Error $ERR";
run ("cp ~$usr/12.2.0_cp/faiz_cpv/MPlist.lst ~$usr/12.2.0_cp/faiz_cpv/$pdate") || die "Error: $ERR";
run ("cd ~$usr/12.2.0_cp/faiz_cpv/$pdate; sh /opsutils/mfg_top/rel/CPV/bin/list_generation.sh . MPlist.lst mfg_relall_us\@oracle.com") or die "error $ERR";
.
.

其中一个shell脚本要求脚本用户输入其密码。也就是说,在stdout上打印一条消息,并通过shell接受密码。在整个过程中对此shell脚本进行了许多调用,这意味着用户必须多次重新输入密码。

我是否可以通过命令行本身请求用户输入密码,并隐式传递该密码,而不是一次又一次地提示用户输入密码?

1 个答案:

答案 0 :(得分:4)

Perl内置mkdirchdirFile::Copy提供了复制例程。使用它们通常比炮击更安全,更快捷。虽然它不会为您翻译~File::chdir使更改目录并运行命令更安全。

对于其余部分,请使用完整的IPC::Run来控制与您的程序进行交互,并使用Term::ReadLine::Gnu来读取密码而不显示密码。对不起,这只是草图,而不是完整的答案。