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


in reply to Perl Expect Command output

First, try running it in debug mode
#!/usr/bin/perl use strict; use warnings; use Expect; $Expect::Debug = 1; my $timeout = 10; ...
Expect the unexpected:).

Update: In case you're still stumped, I put help in a callback. Give this a try:

#!/usr/bin/perl -slw use strict; use Expect; use Data::Dumper::Concise; #$Expect::Debug = 1; my $timeout = 10; my $command = 'telnet'; my $params = '10.123.125.13'; my $exp = Expect->spawn($command, $params) or die "Cannot spawn sftp command"; $exp->expect($timeout, ['mpp>']); $exp->send('enable'); $exp->expect($timeout, ['mpp#']); $exp->send(&help); $exp->expect($timeout, ['mpp#']); $exp->send('exit'); $exp->send('logout'); $exp->soft_close(); sub help { print "help\n\n", "List of available commands\n", " The current commands are: \n", " enable\n", " help\n", " exit\n", " logout\n"; }

Replies are listed 'Best First'.
Re^2: Perl Expect Command output
by armstd (Friar) on Aug 28, 2011 at 18:00 UTC

    They seem to be asking for the output from a command ('help' in this case) executed on the remote device. before is the way to do it. What debugging steps have you taken already and what did you get? Since you are not error checking your spawn, do you even know if you're successfully connecting?

    --Dave

      Thanks for the info. I had tried with a command which stores the buffer content of 'just before executed command'.
        Am looking for the same, could you elaborate your statement, which function you have used to get the output.