这里我试图在脚本中使用两个CPAN模块。除了我在代码中使用的内容之外,还有其他正确的方法吗?
#!/usr/bin/perl -w
$host='example/cp,';
$user='usertest';
$pass='kjasdkjd';
$cmd='su -';
$stdin='jkhasdj';
#$cmd='passwd';
use Net::SSH::Perl;
my $ssh = Net::SSH::Perl->new("$host", options => [
"use_pty 1", "interactive true"]);
$ssh->login($user, $pass);
#my($stdout, $stderr, $exit) = $ssh->cmd($cmd,[$stdin]);
#$ssh->shell;
#print ("$stdout\n");
#print ("$stderr\n");
#print ("$exit\n");
use Net::SSH::Expect;
$ssh->send("passwd");
$ssh->waitfor('password:\s*\z', 1) or die "prompt 'password' not found after 1 second";
$ssh->send("frghthhyj");
$ssh->waitfor(':\s*\z', 1) or die "prompt 'New password:' not found";
$ssh->send("redhat");
$ssh->waitfor(':\s*\z', 1) or die "prompt 'Confirm new password:' not found";
$ssh->send("redhat");
我收到错误"Can't locate object method "send" via package "Net::SSH::Perl::SSH2"
虽然“send”方法与“Net :: SSH :: Expect”相关联,但脚本会查找“Net :: SSH :: Perl”中的方法正确的。
答案 0 :(得分:2)
查看Net::SSH::Expect
的文档。它显示了如何创建对象的实例,登录等。
您无法通过Net::SSH::Perl
登录,并将您的实例$ssh
神奇地转换为Expect对象。从一开始就从Expect开始。