Я думаю, что у меня была похожая проблема при входе в привилегированный режим exec с маршрутизаторами cisco, который аналогичным образом запрашивает пароль при вызове «en».я обошел это с помощью специальной подпрограммы:
sub enable { my ($expect_session, $password) = @_;
$expect_session->send("en\n");
$expect_session->expect($timeout,
[ qr/[Pp]assword:/,
sub {
my $expect_session = shift;
$expect_session->send("$password","\n");
exp_continue;
} ],
-re => $prompt,
);
}
, но я думаю, что проблема в том, что вы не используете Perl's Expect, поскольку он предназначен для использования.Будет создан сеанс Expect для управления соединением SSH, затем через него будут отправляться команды.вам не нужен Net :: SSH: Perl вообще.вот мое определение $ hope_session:
my $expect_session = new Expect();
$expect_session->log_stdout(0); # let's keep things quiet on screen; we only want command output.
$expect_session->log_file(".expectlog");
$expect_session->spawn("/usr/bin/ssh -o StrictHostKeyChecking=no $username\@$host")
or die ("\nfor some reason we can't establish an SSH session to $host.\n
it's something to do with the spawn process: $!\n");
, возможно, пропущено несколько частей, но, надеюсь, это заставит вас двигаться в правильном направлении.это сложный модуль, который я не понимаю полностью.я желаю вам удачи в том, чтобы делать то, что вы хотите.