当我使用Parallel :: Forkmanager完成远程ssh的并行处理时,我遇到了#34; SSHAuthenticationError登录超时"如果远程设备无法访问,则会出现问题,然后STDOUT完全混乱。 那么我该如何解决这个混乱的STDOUT问题呢? 为什么我们可以使用eval {ssh operation}来解决? 感谢。
答案 0 :(得分:3)
您可以尝试Net::OpenSSH,它甚至可以让您在所有主机中并行运行操作而不会有太多麻烦。
您还可以尝试增加timeout
。
另一种可能的解决方案可能是下面的
my $retry_count = 0;
while(1){
$rc = eval{$ssh->login();};
last if defined $rc;
last if $retry_count >= $max_retry_count;
$retry_count++;
sleep 1;
}
另见:Net::SSH::Perl, Net::SSH::Expect crashes script if host is unreachable