in reply to Re^2: Net::OpenSSH multiple commands
in thread Net::OpenSSH multiple commands

Hi Salva, I believe you are probably the best person to answer this:... I changed the line:

my $output = $ssh->capture({stdin_data => "term length 0\nterm width 512\nsh ver\nsh run\nexit\n"});

to this:

my @Output = $SSH->capture({stdin_data => "terminal length 0\nterminal width 512\nshow ip accounting\nexit\n"});

and I get an error (I think might be caused by openssh) that says "Bad packet length 688328622." (The length numbers change every time I run the code). If i remove some parts of the commands such as "terminal length 0" and run it again, the error goes away. The same goes if I leave "terminal length 0" in there and replace say "show ip accounting" by "show ip route".(no error)

So it seems that a combination of commands will trigger this error. I do have to say though that the output is ok regardless of the error. Would this be another error which I should Ignore? or could this be a bug?

Thanks

Replies are listed 'Best First'.
Re^4: Net::OpenSSH multiple commands
by salva (Canon) on Apr 25, 2012 at 09:22 UTC
    This looks like a bug on the router SSH stack. Try to replicate it running the following command from the command line in order to discard Perl or Net::OpenSSH as the cause of the problem.
    ssh router <<EOC terminal length 0 terminal width 512 show ip accounting exit EOC

    I guess the malfunction is caused by some buffer overflow on the remote shell that is triggered by the longer command line.

        my working solution has been provided on the main page.