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".
的可行解决方法
我正在尝试使用 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".
的可行解决方法