First post in over 10 years. Ugh!
Recently, I had to work with a Java based SSH server (based on SSHTools, sometimes forked as J2SSH). I tried different options (ignoring the fact that some SSH modules are an absolute pain to install). There were different reasons why one or the other solution didn't work. Public key authentication was not support (don't ask), Expect was at the top of my list either. In the end, I made it work with Net::OpenSSH and the pty mapping to Net::Telnet. From POD:
my ($pty, $pid) = $ssh->open2pty({stderr_to_stdout => 1}) or die "unable to start remote shell: " . $ssh->error; my $telnet = Net::Telnet->new(-fhopen => $pty, -prompt => '/.*\$ $/', -telnetmode => 0, -cmd_remove_mode => 1, -output_record_separator => "\r"); $telnet->waitfor(-match => $telnet->prompt, -errmode => "return") or die "login failed: " . $telnet->lastline; my @lines = $telnet->cmd("who"); ... $telnet->close; waitpid($pid, 0);
The Prompt needed to be adjusted as the COTS had its own customized prompt.
... I'm belgian but I don't play one on TV.