Yeah, I found subclassing Expect to be the easiest way to go (this was several years ago when SSH first started being supported across the board on our switches and routers). Too many of the dumber devices have cranky SSH support when it comes to keys and using multiple channels.

Read the source of Net::Telnet for hints and a good starting regexp to match the various prompts. Then subclass Expect and add login(), enable(), cmd() methods.

The reasons not to use a full-blown CPAN module are that once you get past real SSH hosts and into routers and then switches and access points the capabilities change so much that the modules don't work across them all. And when you submit bugs to vendors it goes much smoother if you can tell them that you're just using openssh.

Just start with Expect, enable the logging and spawn a ssh and work through the login() and cmd() steps using just the expect, send methods. Then factor that code out into a subclass of Expect.

You might want to look at Net::CLI::Interact which I just noticed a few weeks ago, it looks decently promising.


In reply to Re^3: Help migrating script from TELNET to SSH by zengargoyle
in thread Help migrating script from TELNET to SSH by bigrayhicks

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.