Hello thanos1983!
Well, I decided to use a different approach instead of using $t->print and $t->waitfor, I decided to use line continuation character, and I discovered it worked very well! I found this code here and adapted for my needs, on which it fitted well. There says some shells have a limitation of 255 characters line limit.
sub cmd_unixlong {
my ($obj, $cmd) = @_;
my ($line, $pos);
my $max_tty_line = 254;
## Start a Bourne shell.
$obj->cmd(-string => "/usr/bin/env " .
"'PS1=<xPROMPTx> ' 'PS2=<xPROMPTx> ' /bin/sh -i",
-prompt => '/<xPROMPTx> $/')
or return;
## Break-up the one large command line and send as shorter lin
+es.
$pos = 0;
while (1) {
$line = substr $cmd, $pos, $max_tty_line;
$pos += length $line;
last unless $pos < length $cmd;
## Send the line with continuation char.
$obj->cmd(-string => "$line\\",
-prompt => '/<xPROMPTx> $/')
or return;
}
## Send the last line and return the output.
$obj->cmd("$line ; exit");
} # end sub cmd_unixlong
I'm still using telnet, so I changed it to something more or less like this:
sub cmd_telnetlong {
my ($obj, $cmd) = @_;
my ($line, $pos);
my $max_tty_line = 254;
## Break-up the one large command line and send as shorter lin
+es.
$pos = 0;
while (1) {
$line = substr $cmd, $pos, $max_tty_line;
$pos += length $line;
last unless $pos < length $cmd;
## Send the line with continuation char.
$obj->cmd(-string => "$line^",
-prompt => '/More?/i')
or return;
}
## Send the last line and return the output.
return $obj->cmd("$line ; exit");
} # end sub cmd_unixlong
As I haven't found anything to solve the line limitation, this workaround served me very well!
Thanks all for your time!
|