470,568 Members | 1,535 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 470,568 developers. It's quick & easy.

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
Jul 19 '05 #1
4 4981
On Sun, 29 Jun 2003 21:05:50 -0500, "mark" <ma***********@yahoo.com>
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
Jul 19 '05 #2

"Eric Amick" <er********@comcast.net> wrote in message
news:t8********************************@4ax.com...
On Sun, 29 Jun 2003 21:05:50 -0500, "mark" <ma***********@yahoo.com>
wrote:
i am attempting to write a script using Net::Telnet. The script telnets toa machine
logs in and issues a command to list the config. Tthe output of the commandpauses
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
Jul 19 '05 #3
"mark" <ma***********@yahoo.com> wrote in message news:<F-********************@www.bayou.com>...
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
Jul 19 '05 #4
On Sun, 29 Jun 2003 21:05:50 -0500, "mark" <ma***********@yahoo.com>
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
Jul 19 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

8 posts views Thread by Michael McGarry | last post: by
2 posts views Thread by Sehboo | last post: by
4 posts views Thread by Egyd Csaba | last post: by
7 posts views Thread by Billa | last post: by
3 posts views Thread by a | last post: by
25 posts views Thread by Mike | last post: by
13 posts views Thread by Wiseman | last post: by
12 posts views Thread by FAQEditor | last post: by
1 post views Thread by livre | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.