【发布时间】:2015-06-05 17:50:46
【问题描述】:
我正在尝试使用 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 代码,用户名设置正确,但我最终不得不每次手动输入密码。
【问题讨论】:
-
我实际上已经想出了解决密码问题的解决方案,方法是在 perl 中使用“使用期望”并让该解决方案为我处理。另外,出于安全原因,我知道这是低于标准的,但这不是自愿的。
-
你听说过pexpect吗?
-
如果可能,您应该设置 SSH 密钥而不是使用密码。
-
@Tom 我认为你应该使用 SSH 密钥。他们不会要求任何东西,你也不会拘泥于任何东西。
-
我会研究一下这些键,但对于这个项目来说,它们并不是一个真正的选择。为什么我不使用某种形式的 except 就无法通过密码部分,这确实是我一直坚持的问题。