http://www.perlmonks.org?node_id=1051417


in reply to Net::OpenSSH to ups appliance

The SSH implementation on that device seems crippled. It doesn't perform authentication using the SSH protocol. Instead it asks for the password when a shell is started on some SSH channel.

Net::OpenSSH will not handle authenticating against such systems. Though, if all you want is getting the motd, the following code may work:

my $ssh = Net::OpenSSH->new($host, user => $user, timeout => 30); my $motd = $ssh->capture({stdin_data => "$password\n\n4\n", stderr_to_stdout => 1}); print $motd;

Alternatively, just use Expect.