如何使用Expect连接SSH?

时间:2010-07-09 08:16:48

标签: perl expect

在我的计划中,我使用Expect来运行ssh。我的节目是

$argument="root@10.2.2.2";
$exp->spawn("ssh $argument") or die "Cannot spawn ssh to ip $ssh_ip_address\n";

但即使它无法生成ssh,也不会打印Cannot spawn ssh to ip $ssh_ip_address。你能帮我理解它为什么会给出错误信息吗?

2 个答案:

答案 0 :(得分:1)

首先,您使用双引号作为$argument声明,这意味着变量将在其内容中进行插值。 @10将被评估为数组@10的内容。使用单引号来避免插值。

请记住,始终总是在每个Perl模块,程序和脚本的顶部包含use strict; use warnings;。它将为您节省大量隐藏的错误,因此会让您头疼不已。 :)

除此之外,您还必须发布正在运行的实际代码。

答案 1 :(得分:1)

不是直接使用Expect,而是运行Net::SSH::Expect(包含与Expect的SSH交互)或Net::OpenSSH(这不使用Expect,并建议不要使用它)。此外,始终使用严格和警告。