在我的计划中,我使用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
。你能帮我理解它为什么会给出错误信息吗?
答案 0 :(得分:1)
首先,您使用双引号作为$argument
声明,这意味着变量将在其内容中进行插值。 @10
将被评估为数组@10
的内容。使用单引号来避免插值。
请记住,始终总是在每个Perl模块,程序和脚本的顶部包含use strict; use warnings;
。它将为您节省大量隐藏的错误,因此会让您头疼不已。 :)
除此之外,您还必须发布正在运行的实际代码。
答案 1 :(得分:1)
不是直接使用Expect,而是运行Net::SSH::Expect(包含与Expect的SSH交互)或Net::OpenSSH(这不使用Expect,并建议不要使用它)。此外,始终使用严格和警告。