Perl 如何修复Net::SSH::Expect;SSHAuthenticationError登录超时“;使用Parallel::Forkmanager时出现问题?

Perl 如何修复Net::SSH::Expect;SSHAuthenticationError登录超时“;使用Parallel::Forkmanager时出现问题?,perl,ssh,parallel-processing,Perl,Ssh,Parallel Processing,当我使用Parallel::Forkmanager为远程ssh完成并行处理时,如果无法访问远程设备,则会遇到“SSHAuthenticationError Login timed out”问题,然后STDOUT就完全混乱了。 那么,我如何解决这个混乱的标准输出问题呢? 为什么我们可以使用eval{ssh操作}来解决这个问题? 谢谢。您可以试试,它甚至可以让您在所有主机上并行运行操作,而不会有太多麻烦 您还可以尝试增加超时时间 另一种可能的解决方案可能如下所示 my $retry_count =

当我使用Parallel::Forkmanager为远程ssh完成并行处理时,如果无法访问远程设备,则会遇到“SSHAuthenticationError Login timed out”问题,然后STDOUT就完全混乱了。 那么,我如何解决这个混乱的标准输出问题呢? 为什么我们可以使用eval{ssh操作}来解决这个问题? 谢谢。

您可以试试,它甚至可以让您在所有主机上并行运行操作,而不会有太多麻烦

您还可以尝试增加
超时时间

另一种可能的解决方案可能如下所示

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::Expect非常不可靠。正如Chankey已经指出的,使用Net::OpenSSH,甚至更好。