我正在尝试创建一个ksh包装脚本,该脚本检索密码,然后调用perl脚本,但是perl脚本认为只有enter被按下,所以一直在提示。
我不能更改perl脚本。
我创建了一个提示输入的存根Perl脚本,它接受包装器中的输入。我试过$var | Perl perlscript.pl和value | Perl perlscript.pl。还尝试了perl perlscript.pl << ANSWERS $var ANSWERS、echo $var | perl perlscript.pl和echo $(derive password) | perl perlscript.pl。
发布于 2019-10-22 18:33:53
我试过
$var | Perl perlscript.pl和value | Perl perlscript.pl- spudnik267 9月26日9:09。 也尝试了perl perlscript.pl << ANSWERS $var ANSWERS,echo $var | perl perlscript.pl和echo $(derive password) | perl perlscript.pl- spudnik267 9月26日上午10:10。
密码通常不会从STDIN读取。相反,它们是直接从psuedoterminal或PTY读取的。这意味着它是从控制终端程序,而不是从STDIN读取。这是一种过时的安全措施,目的是使自动填写密码更加困难。对爆竹来说,这是一个减速带,但对其他人来说却很不方便。
下面是一个简单的程序,它响应来自PTY的输入。
open my $fh, "/dev/tty" or die $!;
print while <$fh>;此程序将不会看到输入管道到STDIN。它只会看到你在终端上输入的内容。
与程序的PTY对话有很多种方式。最强大的功能之一是使用期望。
#!/usr/bin/env perl
use Expect;
my $exp = Expect->spawn("perl tty.pl") or die $!;
$exp->send("test\n");
$exp->soft_close();https://stackoverflow.com/questions/58113141
复制相似问题