Perl - SSHProcessError Ошибка завершения процесса ssh
Я создал сценарий, который будет делать ssh
к удаленному серверу и выполнить определенную команду. Чтобы выполнение было успешным, я ждал, пока не получуEND
ключевое слово из результата команды.
Так что в положительном сценарии тестового случая это работает нормально.
...
foreach my $ip( @list_of_ips ){
chomp($ip);
eval {
$ssh = SSH_Connection( $ip, $user, $passwd );
print "Connection is Success to $ip\n" if($ssh);
};
$command_to_execute = "<forming a command which needs be execute in remote server>";
print "$command_to_execute\n";
my $str = 'END';
eval{
$ssh->send("$command_to_execute; echo $str");
};
$ssh->waitfor($str, undef);
last if($ssh);
}
...
...
sub SSH_Connection {
my ( $host, $user, $passwd ) = @_;
my $ssh = Net::SSH::Expect->new ( host => $host, user => $user, password => $passwd, raw_pty => 1, no_terminal => 0 );
my $login_output;
my $handledie = eval {
$login_output = $ssh->login();
};
if ( $@ ) {
if ($@ =~ m/SSHConnectionError/i ) {
print "SSH Connection Error\n";
next;
} elsif ( $@ =~ m/SSHProcessError/ix ) {
print "SSH Process Error\n";
next;
} elsif ( $@ =~ m/SSHConnectionAborted/ix ) {
print "SSH Connection Aborted\n";
next;
} else {
print "SSH Unknown Error: $@\n";
next;
}
}
if ($login_output !~ /Last login/) {
die "Login has failed.";
} else {
return $ssh;
}
print "SSH to ip failed\n";
}
Но когда соединение с удаленным хостом выполнено успешно и выполнение команды не удается, появляется следующая ошибка, и сценарий завершается.
SSHProcessError The ssh process was terminated at ...script.pl line 47
У нас есть $ssh->waitfor($str, undef);
в строке 47.
Как решить эту проблему? TIA.