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.

0 ответов

Другие вопросы по тегам