in reply to Re: Problem with Net::Telnet
in thread Problem with Net::Telnet

That definitely helped. At least I know it was a syntax issue. Now my only problem is I'm getting a 'pattern match timed-out' error.
Uncaught exception from user code: pattern match timed-out at scopedzT1 line 279 at /sw/lib/perl5/site_perl/5.8.8/Net/Telnet.pm line 2036 Net::Telnet::_croak('Net::Telnet=GLOB(0x3a684c)', 'pattern mat +ch timed-out') called at /sw/lib/perl5/site_perl/5.8.8/Net/Telnet.pm +line 539 Net::Telnet::error('Net::Telnet=GLOB(0x3a684c)', 'pattern matc +h timed-out') called at /sw/lib/perl5/site_perl/5.8.8/Net/Telnet.pm l +ine 1995 Net::Telnet::waitfor('Net::Telnet=GLOB(0x3a684c)', '/yyyy# /i' +) called at scopedzT1 line 279

I'm guessing it's just a pattern match issue with the prompt. I'm actually getting into the device. At least that is what the output file is showing me. Is there any way around the pattern match error? The output file is actually showing the correct prompt. Unsure why it's failing. Thanks for your help.

Replies are listed 'Best First'.
Re^3: Problem with Net::Telnet
by frozenwithjoy (Priest) on Nov 26, 2012 at 01:36 UTC
    Can you determine at which pattern match it is timing out based on the line # or printing debug statements to STDOUT between telnet calls?
      Yes, it's right at line 24 where it times out.
      $telnet->waitfor('/$device# /i'); ##wait for prompt
      From the output I can see it authenticate, but once I get to the prompt it times out. My output file looks something like this:
      username: xxxx
      password: zzzz
      yyyy#

      Now if I remove $device and just enter a specific name followed by the prompt(#), it prints out exactly what I want. It's just when I try to use a variable I run into this problem.
      $telnet->waitfor('/yyyy# /i'); ##wait for prompt

      This works. Maybe it has something to do with the prompt? I removed "." from the line and it still times out.

        What if you use this:

        $telnet->waitfor("/$device# /i");   ##wait for prompt

        instead of this?:

        $telnet->waitfor('/$device# /i');   ##wait for prompt
        It looks like you forgot to chomp the line entered by user.
        It's also useful to protect arbitrary data in regexes by putting them between \Q and \E.
        Sorry if my advice was wrong.