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.
I'm still using telnet, so I changed it to something more or less like this: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
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!
In reply to Re^4: Telnet command with more than 1024 chars (updated)
by ElectricCheese
in thread Telnet command with more than 1024 chars
by ElectricCheese
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |