加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

通过perl的期望自动化并捕获登录提示

发布时间:2020-12-16 06:13:57 所属栏目:大数据 来源:网络整理
导读:我正在尝试在Perl中自动化登录提示 我正在使用SSHGetCredentials(‘login_prompt’= 1)来生成登录提示,这是perl的Expect :: SSH库的一个功能 这就是我的代码的样子,这里REST :: Client- getCredentials()在内部调用SSHGetCredentials(‘login_prompt’= 1),
我正在尝试在Perl中自动化登录提示

我正在使用SSHGetCredentials(‘login_prompt’=> 1)来生成登录提示,这是perl的Expect :: SSH库的一个功能

这就是我的代码的样子,这里REST :: Client-> getCredentials()在内部调用SSHGetCredentials(‘login_prompt’=> 1),它将调用登录提示并返回输入的用户ID和密码.

use Expect;
my $command = "perl -e 'use REST::Client; REST::Client->getCredentials()'";
my $exp = Expect->spawn($command) || die "i am done";
$exp->expect(undef,'Login on Remote:');
$exp->send("usern");
$exp->expect(undef,'Password of user:');
$exp->send("12345n");

现在我想验证用户名或密码是否是我通过的,所以我想捕获它们并进行比较.

我该如何捕捉它们?

我试过这个:

use Expect;
my $command = "perl -e 'use REST::Client; $tmp = REST::Client->getCredentials();print $tmp->{'username'};print " ";print $tmp->{'password'};'";
my $exp = Expect->spawn($command) || die "i am done";
$exp->expect(undef,'Password of user:');
$exp->send("12345n");
my $value = $exp->expect(1);

但是$value没有任何东西和$exp-> expect(1)只打印STDOUT中的值.

解决方法

不确定它是否是最好的方式,但它的工作原理

use Expect;
my $command = "perl -e 'use REST::Client; $tmp = REST::Client->getCredentials();print $tmp->{'username'};print " ";print $tmp->{'password'};'";
my $exp = Expect->spawn($command) || die "i am done";
$exp->expect(undef,'Password of user:');
$exp->send("12345n");
if ($exp->expect(undef,'-re','user 12345') == 1) {
    print "matchedn";
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读