如何自动化ssh登录,其中perl脚本用户需要2个密码

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

我需要自动化一个测试用例,如果用户使用第一个密码(键盘交互式)成功验证用户,则会在ssh登录时提示用户输入第二个密码。

如何使用perl自动化这个测试用例?

尝试过使用perl SSH expect模块,但它只适用于第一个密码:

如果没有输入您的EMERG一次性密码行,脚本适用于单个密码。但如果我包括第二个密码即。输入您的EMERG一次性密码,编译后会出现以下错误:

test_pswrd.pl第8行的语法错误,接近“time password”全局符号“$ ssh”需要test_pswrd.pl第13行显式的包名。由于编译错误,test_pswrd.pl的执行被中止。

use Net::SSH::Expect;
use strict; 
use warnings;

my $ssh = Net::SSH::Expect->new (host => "1.1.1.1",
password=> 'testpwd',
Enter your EMERG one-time password => '123456',
user => 'testuser',
raw_pty => 1);

my $login_output = $ssh->login();
print $login_output;
perl authentication ssh automation passwords
1个回答
0
投票

AFAIK,没有SSH Perl模块支持直接使用多个密码进行日志记录。

Net::OpenSSH允许一个人使用自定义login handler,但你必须编写代码来读取远程提示并在合适的时间发送密码。

另一种选择是使用Expect

一旦建立连接,哪个选项最好取决于您之后计划做什么。对于复杂的SSH交互,Net::OpenSSH是更好的选择。另一方面,如果你只是想向远程端发送一个命令,可能写自定义login_handler不值得麻烦,所以我的建议是在这种情况下使用Expect

© www.soinside.com 2019 - 2024. All rights reserved.