1

我有一个 perl 脚本启动一个 EC2 实例,然后使用 Net::OpenSSH 连接并运行一些命令。

my $ssh = Net::OpenSSH->new( $username . "\@" . $host, 
          key_path => $key_path,
          master_opts => [-o => "ConnectionAttempts=30", -o => "ConnectTimeout=30"] );

if ( $ssh->error ) {
  die "Timeout: " . $ssh->error . "\n";
}

这似乎不起作用 - 这应该尝试 15 分钟,然后退出,但它几乎立即返回。我从来没有收到 Timeout: 错误消息,所以 ssh 没有返回错误。

这是正确的语法吗?有没有更好的方法来处理 EC2 实例可能需要几分钟才能可用的事实?

4

1 回答 1

0

根据 CPAN 文档,我可以看到ConnectionAttempts并且ConnectTimeout应该去default_ssh_opts而不是master_opts. 请尝试一下。

于 2013-05-28T07:40:34.997 回答