Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number

Re: Net::SSH::Perl returns error on pty allocation

by Khen1950fx (Canon)
on Mar 03, 2013 at 12:25 UTC ( #1021496=note: print w/replies, xml ) Need Help??

in reply to Net::SSH::Perl returns error on pty allocation

No pty allocated, pty required..

Use use_pty => 1 in the constructor; also, the customer server expects SSH2, so use protocol => 2 in the constructor also. Here's the way that I would do it:

#!/usr/bin/perl use strict; use warnings; use Net::SSH::Perl; my $user = 'user'; my $pass = 'password'; my $cmd = "ls /root"; my $ssh = Net::SSH::Perl->new('localhost', debug => 1, protocol => 2, use_pty => 1, ); $ssh->login($user, $pass) ; if ($cmd) { my($stdout, $stderr, $exit) = $ssh->cmd($cmd); print $stdout if $stdout; print $stderr if $stderr; } else { eval "use Term::ReadKey;"; ReadMode('raw'); eval "END { ReadMode('restore') };"; $ssh->shell; print "Connection to host closed.\n"; } __END__

Replies are listed 'Best First'.
Re^2: Net::SSH::Perl returns error on pty allocation
by gdanenb (Acolyte) on Mar 03, 2013 at 13:37 UTC

    Is there an option to send commands and collect output when using $ssh->shell interactive mode?

    I think this is the only way I'll success since customer node is not a standard Linux box

    Anyway, this is the output when I run the code above:

    sem1: Reading configuration data /root/.ssh/config sem1: Reading configuration data /etc/ssh_config sem1: Allocated local port 1023. sem1: Connecting to, port 22. sem1: Remote protocol version 2.0, remote software version OpenSSH_4.3 +-40020723001500 sem1: Net::SSH::Perl Version 1.33, protocol version 2.0. sem1: No compat match: OpenSSH_4.3-40020723001500. sem1: Connection established. sem1: Sent key-exchange init (KEXINIT), wait response. sem1: Algorithms, c->s: 3des-cbc hmac-sha1 none sem1: Algorithms, s->c: 3des-cbc hmac-sha1 none sem1: Entering Diffie-Hellman Group 1 key exchange. sem1: Sent DH public key, waiting for reply. sem1: Received host key, type 'ssh-dss'. sem1: Host '' is known and matches the host key. sem1: Computing shared secret key. sem1: Verifying server signature. sem1: Waiting for NEWKEYS message. sem1: Enabling incoming encryption/MAC/compression. sem1: Send NEWKEYS, enable outgoing encryption/MAC/compression. sem1: Sending request for user-authentication service. sem1: Service accepted: ssh-userauth. sem1: Trying empty user-authentication request. sem1: Authentication methods that can continue: password. sem1: Next method to try is password. sem1: Trying password authentication. sem1: Login completed, opening dummy shell channel. sem1: channel 0: new [client-session] sem1: Requesting channel_open for channel 0. sem1: channel 0: open confirm rwindow 0 rmax 32768 sem1: Got channel open confirmation, requesting shell. sem1: Requesting service shell on channel 0. sem1: channel 1: new [client-session] sem1: Requesting channel_open for channel 1. sem1: Entering interactive session. Received disconnect message: No pty allocated, pty required with Telne +t SSH at /usr/cti/apps/CSPbase/Perl/lib/perl5/site_perl/5.8.8/Net/SSH/Perl/S line 300
      Try adding set_interactive to the constructor.

        I tried most of options provided by Net::SSH::Perl module but failed to get good results

        On the other hand Net::SSH::Expect module worked perfect for me

        Thank you all