首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl脚本提示输入密码,但不接受来自ksh的输入。

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

Stack Overflow用户
提问于 2019-09-26 08:59:43
回答 1查看 156关注 0票数 0

我正在尝试创建一个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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-22 18:33:53

我试过$var | Perl perlscript.plvalue | Perl perlscript.pl - spudnik267 9月26日9:09。 也尝试了perl perlscript.pl << ANSWERS $var ANSWERSecho $var | perl perlscript.plecho $(derive password) | perl perlscript.pl - spudnik267 9月26日上午10:10。

密码通常不会从STDIN读取。相反,它们是直接从psuedoterminal或PTY读取的。这意味着它是从控制终端程序,而不是从STDIN读取。这是一种过时的安全措施,目的是使自动填写密码更加困难。对爆竹来说,这是一个减速带,但对其他人来说却很不方便。

下面是一个简单的程序,它响应来自PTY的输入。

代码语言:javascript
复制
open my $fh, "/dev/tty" or die $!;
print while <$fh>;

此程序将不会看到输入管道到STDIN。它只会看到你在终端上输入的内容。

与程序的PTY对话有很多种方式。最强大的功能之一是使用期望

代码语言:javascript
复制
#!/usr/bin/env perl
  
use Expect;

my $exp = Expect->spawn("perl tty.pl") or die $!;
$exp->send("test\n");
$exp->soft_close();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58113141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档