如何自动化SSH登录,其中需要使用Perl脚本的用户2个密码



我需要自动化一个测试用例,如果用户通过第一个密码成功身份验证用户,则在SSH登录时提示用户(键盘Interactive(。

如何使用Perl自动化此测试案例?

尝试使用Perl SSH期望模块,但仅适用于第一密码:

不输入您的急诊密码行,脚本可用于单个密码。但是,如果我包含第二个密码,即。输入您的新兴一次密码,在编译时可以看到以下错误:

test_pswrd.pl第8行的语法错误,靠近"时间密码"全局符号" $ 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;

afaik,没有SSH PERL模块直接使用多个密码来记录。

net :: openssh允许一个人使用自定义登录处理程序,但是您必须编写代码以读取远程提示并在正确的时间发送密码。

另一个选择是使用期望。

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

最新更新