Perl脚本提示输入密码,但不接受来自ksh的输入

问题描述 投票:0回答:1

我正在尝试创建一个ksh包装脚本,该脚本检索密码然后调用一个perl脚本,但是perl脚本认为仅按下了enter键,因此会不断提示。

我无法更改perl脚本。

我创建了一个存根Perl脚本,它提示输入,并且接受包装程序的输入。我已经尝试过$var | Perl perlscript.plvalue | Perl perlscript.pl。还尝试了perl perlscript.pl << ANSWERS $var ANSWERSecho $var | perl perlscript.plecho $(derive password) | perl perlscript.pl

perl
1个回答
1
投票

我尝试过$var | Perl perlscript.plvalue | Perl perlscript.pl – spudnik267 Sep 26 at 9:09

[也尝试过perl perlscript.pl << ANSWERS $var ANSWERSecho $var | perl perlscript.plecho $(derive password) | perl perlscript.pl – spudnik267 Sep 26 at 10:10

通常不从STDIN读取密码。而是直接从psuedoterminal or PTY中读取它们。这意味着它是从控制终端程序而不是从STDIN读取的。这是一种过时的安全措施,旨在使自动填写密码更加困难。对于饼干来说,这是一个减速带,但对其他所有人来说非常不便。

这是一个简单的程序,从PTY回显输入。

open my $fh, "/dev/tty" or die $!;
print while <$fh>;

此程序将看不到输入到STDIN的输入。它只会显示您在终端上键入的内容。

有多种与程序的PTY交谈的方法。最强大的功能之一就是使用Expect

#!/usr/bin/env perl

use Expect;

my $exp = Expect->spawn("perl tty.pl") or die $!;
$exp->send("test\n");
$exp->soft_close();
© www.soinside.com 2019 - 2024. All rights reserved.