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

Sterh has asked for the wisdom of the Perl Monks concerning the following question:

Hello , please help to figure out why ssh commands returns only commands themselves as output.

$ssh = Net::SSH::Expect->new ( host => "$connectIP", password=> 'pass', user => 'Admin', port => '22', raw_pty => 1, timeout => 10 ); $ssh->run_ssh() or die "SSH process couldn't start: $!"; $ssh->waitfor('password: '); $ssh->send("pass"); $ssh->waitfor('\>.* '); $ssh->send("server security authentication=local,radius"); $ssh->waitfor('\>.* '); $ssh->send("y"); $ssh->waitfor('\>.* '); my $line; while ( defined ($line = $ssh->read_all()) ) { print $line . "\n"; }

I tried also login -> exec construction , also does not work for me. Please point me what I am doing wrong . Thank you Dmitry

Replies are listed 'Best First'.
Re: Net::SSH::Expect command returns command itself
by aitap (Curate) on Sep 07, 2012 at 19:46 UTC
    boolean waitfor($pattern [,$timeout])
    # boolean waitfor ($string [, $timeout, $match_type]) # This method reads until a pattern or string is found in +the input stream. # All the characters before and including the match are re +moved from the input stream.
    This can be the error cause: waitfor removes all the text until the prompt, including the command output. No ideas how to work it out, though.
    Sorry if my advice was wrong.
      why you don't copy the error message from your command here?

        There was no error message. So solution was to add "\r" at the end of command