Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Expect.pm control terminal width

by jmclark (Novice)
on Oct 07, 2008 at 21:27 UTC ( [id://715856]=perlquestion: print w/replies, xml ) Need Help??

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

Hi, using perl 5.8.8 on ubuntu. I have a script that uses expect.pm to ssh to a device, pull some configs, parse the configs and tell the user if certain things are configured correctly or not. Everything is working great except for one device type that is a cisco content engine. The problem is, I suppose that this device sets the column width to a pretty small number when connected via script so all the output wraps which makes it near about impossible to pull what I need from it in an orderly fashion. Can someone tell me how to manually tell the device what my column width is. It seems to work fine in my ssh client, but when accessing it through the script is all wrapped. So again, I'd assume it is a setting that the client is sending to the device. Within the IOS of the device there is no way to manually set the width such as on catos' "set width XXX" Thanks, J

Replies are listed 'Best First'.
Re: Expect.pm control terminal width
by Illuminatus (Curate) on Oct 07, 2008 at 21:56 UTC
    1. Use Net::SSH::Expect instead. I believe it makes better terminal assumptions
    2. try the 'stty' and/or 'slave' methods in expect.pm: $object->stty(qw("cols 200"));
      problem with converting it over to Net::SSH::Expect is that the script is completely done and is around 4k lines of code. It just recently became a problem because of some changes on the devices that have longer outputs so I'd have to competely re-write the script.
      $object->stty(qw("cols 200"));
      Returns:
      IO::Stty::stty passed invalid parameter '"cols'
      IO::Stty::stty passed invalid parameter '200"'
      I also tried columns, no quotes, etc.
        Drop the quotation marks (the ones inside the qw):
        $object->stty(qw(cols 200));
        What you have is passing "cols and 200" to stty, which it does not recognize (as indicated in the error messages). Also note that according to the docs, you probably want to be using the slave side of the pty:
        $object->slave->stty(qw(cols 200));

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://715856]
Approved by almut
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others about the Monastery: (2)
As of 2024-04-24 15:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found