Go Back   Velocity Reviews > Newsgroups > PERL
User Name
Password
Register FAQ Members List Calendar Search Today's Posts Mark Forums Read

Reply

PERL - Regular expressions

 
Thread Tools Search this Thread
Old 06-30-2003, 03:05 AM   #1
Default Regular expressions


i am attempting to write a script using Net::Telnet. The script telnets to
a machine
logs in and issues a command to list the config. Tthe output of the command
pauses
about every screenfull and gives the user the prompt " --More-- ". The
script
contains the followin code to account fot the prompt.

$telnet->waitfor('/-\-More\-\- $/i');
$telnet->print('\s');

the script does not proceed past the " --More-- " prompt. this problems
seems to have stumpt me. does anyone have any suggestions for me?

Thanks
mark




mark
  Reply With Quote
Old 06-30-2003, 04:49 AM   #2
Eric Amick
 
Posts: n/a
Default Re: Regular expressions

On Sun, 29 Jun 2003 21:05:50 -0500, "mark" <>
wrote:

>i am attempting to write a script using Net::Telnet. The script telnets to
>a machine
>logs in and issues a command to list the config. Tthe output of the command
>pauses
>about every screenfull and gives the user the prompt " --More-- ". The
>script
>contains the followin code to account fot the prompt.
>
>$telnet->waitfor('/-\-More\-\- $/i');


Hyphens are special only within character classes, so I'd remove the
backslashes for readability if nothing else. Are you absolutely certain
the prompt ends with exactly one space?

>$telnet->print('\s');


This looks suspicious. Shouldn't that be a space in the quotes? You
probably want put() instead of print(); print() sends out a newline
automatically, and you wouldn't press return when typing it manually.

--
Eric Amick
Columbia, MD
  Reply With Quote
Old 06-30-2003, 06:05 AM   #3
mark
 
Posts: n/a
Default Re: Regular expressions


"Eric Amick" <eric-> wrote in message
news:...
> On Sun, 29 Jun 2003 21:05:50 -0500, "mark" <>
> wrote:
>
> >i am attempting to write a script using Net::Telnet. The script telnets

to
> >a machine
> >logs in and issues a command to list the config. Tthe output of the

command
> >pauses
> >about every screenfull and gives the user the prompt " --More-- ". The
> >script
> >contains the followin code to account fot the prompt.
> >
> >$telnet->waitfor('/-\-More\-\- $/i');

>
> Hyphens are special only within character classes, so I'd remove the
> backslashes for readability if nothing else. Are you absolutely certain
> the prompt ends with exactly one space?
>
> >$telnet->print('\s');

>
> This looks suspicious. Shouldn't that be a space in the quotes? You
> probably want put() instead of print(); print() sends out a newline
> automatically, and you wouldn't press return when typing it manually.
>
> --
> Eric Amick
> Columbia, MD



ya, i tried exactly one space prior to trying the /s. ya fairly certain it
is just one space. i was thought it might
be sending an unprintable character for what ever reason, so i changed
input_log to a dump_file and checked
the last character in it. the end of the file just one character with
character code 20. I just tried using the put in
place of the print, but didn't seem to help.

Thanks mark
mark


  Reply With Quote
Old 07-03-2003, 08:32 AM   #4
Peter Pentchev
 
Posts: n/a
Default Re: Regular expressions

"mark" <> wrote in message news:<F->...
> i am attempting to write a script using Net::Telnet. The script telnets to
> a machine
> logs in and issues a command to list the config. Tthe output of the command
> pauses
> about every screenfull and gives the user the prompt " --More-- ". The
> script
> contains the followin code to account fot the prompt.
>
> $telnet->waitfor('/-\-More\-\- $/i');
> $telnet->print('\s');
>
> the script does not proceed past the " --More-- " prompt. this problems
> seems to have stumpt me. does anyone have any suggestions for me?


There could be several problems here.

First, input buffering could pose a problem. The Net::Telnet documentation
explicitly states that all input is buffered; in my limited testing,
the waitfor() method does indeed return lines that do *not* end with an
end-of-line, but I am not sure that this will always be the case.
In other words, the problem could be Net::Telnet's waitfor() not returning
until a whole line has been read, and the --More-- prompt does not really
contain a CR/LF at the end.

Second, are you sure that the string you should be matching for is
the exact sequence of characters '-', '-', 'M', 'o', 'r', 'e', etc?
I mean, some pagers use the "backspace convention" (for lack of a better
name that I can think of right now) to indicate bold, underline and such:
for bold, the pager outputs 'M', backspace, 'M'; for underline, it prints
'_', backspace, 'M'. If the '--More-- ' prompt is bold for some reason,
then '--More-- ' will probably not match it.

Those are two reasons that I can think of offhand.

G'luck,
Peter
  Reply With Quote
Old 10-28-2003, 12:37 PM   #5
adey
 
Posts: n/a
Default Re: Regular expressions

On Sun, 29 Jun 2003 21:05:50 -0500, "mark" <>
wrote:

>i am attempting to write a script using Net::Telnet. The script telnets to
>a machine
>logs in and issues a command to list the config. Tthe output of the command
>pauses
>about every screenfull and gives the user the prompt " --More-- ". The
>script
>contains the followin code to account fot the prompt.
>
>$telnet->waitfor('/-\-More\-\- $/i');
>$telnet->print('\s');
>
>the script does not proceed past the " --More-- " prompt. this problems
>seems to have stumpt me. does anyone have any suggestions for me?
>
>Thanks
>mark
>
>

Hi Mark,

I use the module all the time. The non Perl solution to your problem
is this;

I would suggest you command the machine to dump the whole of the
config in one go.

For instance, if you are attempting to list the config on a Cisco
router, you could issue the command "term len 0" prior to issuing the
command to list the config.

Adey
  Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump