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.

Replies are listed 'Best First'.
Re^2: Net::OpenSSH to ups appliance
by natxo (Scribe) on Aug 29, 2013 at 13:45 UTC
    Thanks for the tip. This is what is working for me now:
    my $ssh = Net::OpenSSH->new( $host, user => "user", password => "password", timeout => 30, ); my $motd = $ssh->capture( { stderr_to_stdout => 1, } ); print $motd;
    The devices are indeed crippled, and unfortunately we need to resort to this kind of stuff to know when they break.