当我使用 Parallel::Forkmanager 完成远程 ssh 的并行过程时,如果远程设备无法访问,我会遇到“SSHAuthenticationError Login timed out”问题,然后 STDOUT 完全混乱。
那么我该如何解决这个混乱的 STDOUT 问题呢?
为什么我们可以使用 eval{ ssh 操作 } 来解决?
谢谢。
你可以试试网络::OpenSSH https://metacpan.org/pod/Net%3a%3aOpenSSH,它甚至可以让您在所有主机上并行运行操作,而无需太多麻烦。
您也可以尝试增加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 会导致脚本崩溃 http://www.perlmonks.org/?node_id=794847
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)