![]() |
|
|
|
#1 |
|
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 |
|
|
|
|
#2 |
|
Posts: n/a
|
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 |
|
|
|
#3 |
|
Posts: n/a
|
"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 |
|
|
|
#4 |
|
Posts: n/a
|
"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 |
|
|
|
#5 |
|
Posts: n/a
|
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 |
|