perl ssh 密码

Perl ssh Password

我正在尝试使用 perl 通过 SSH 连接到一台机器并发出一些命令...

my $ssh = Net::SSH::Perl->new($host);
$ssh->login($user,$pass);
my($stdout, $sterr, $exit) = $ssh->cmd($cmd);
print "$stdout \n"

大体思路是这样的,但是我还是卡在提示输入密码的地方。我也曾尝试使用 python,但也无法通过密码提示。另一方面,Expect 可以很好地处理密码。有谁知道会导致这种情况的原因吗?

编辑:附加信息

我在一台 linux 机器上使用 putty,然后通过 ssh 进入更多 linux 机器。使用上面的 perl 代码,用户名设置正确,但我每次都不得不手动输入密码。

  use strict;
  use warnings;
  use Expect;

  $exp= Expect->spawn("ssh $host -l $user");

  sleep(1);

  $exp->expect($timeout,"Password:");
  $exp->send("$pass\r");

  $exp->expect($timeout,-re,'>');
  $exp->send("ls -l\r");

  $exp->expect($timeout,-re,'>');
  $exp->send("mkdir aDir\r");

  $exp->expect($timeout,-re,'>');
  $exp->send("chmod 777 aDir\r");

  $exp->expect($timeout,-re,'>');
  $exp->send("exit\r");

出于显而易见的原因省略了变量声明...不是问题的确切答案,而是仅使用 "Expect Module".

的可行解决方法