The UNIX and Linux Forums  
Hello and Welcome from United States to the UNIX and Linux Forums! Thank You for Visiting and Joining Our Global Community.

Go Back   The UNIX and Linux Forums > Top Forums > Shell Programming and Scripting
.
google unix.com



Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
shell script performance issues --Urgent icefish Shell Programming and Scripting 18 12-14-2007 10:43 AM
UNIX script issues - Plse help guru's budrito Shell Programming and Scripting 2 02-14-2006 12:50 AM
Issues using ssh from crontab to run remote script from frustrated1 Shell Programming and Scripting 4 08-25-2005 03:49 AM
telnet issues yls177 UNIX for Dummies Questions & Answers 8 09-30-2002 09:52 PM
telnet in a script vaccari UNIX for Dummies Questions & Answers 10 10-10-2001 11:37 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Powered by Powered by Google
 
LinkBack Thread Tools Search this Thread Rate Thread Display Modes
  #1 (permalink)  
Old 04-06-2008
Darknight Darknight is offline
Registered User
  
 

Join Date: Jan 2005
Posts: 4
Telnet Script Issues

HI All
Some body wrote to me this Telnet Script :

Code:
#!/opt/perl/bin/perl
$ip       = $ARGV[0];
die ("IP must be passed as an argument. $!\n") unless defined($ip);
use Net::Telnet ();
$handle = new Net::Telnet (Timeout => 10, Prompt => '/.*(#|>|\))\s*$/');
$handle->open("$ip");
$handle->login("MY_USER","PASSOWRD");
$handle->cmd("terminal length 0");
@lines = $handle->cmd("show cdp neighbor");
print "@lines";
#system("sleep 30");
$handle->cmd(exit);
$handle->close;
This Script telnets a Cisco device and execute a command and prints out the result.
My Issues in this Script are :
1 – I understand all the lines Except this one “ Prompt => '/.*(#|>|\))\s*$/'
I know its function is define the Prompt for cisco router but I need any one explain it for me I mean the syntax .

2 – I downloaded the telnet module from CPAN.org and tried to install it, it gives me an error like this :

Code:
CORE" perlmain.c
(Bundled) cc: warning 480: The -A option is available only with the C/ANSI C pro
duct; ignored.
(Bundled) cc: warning 480: The +Z option is available only with the C/ANSI C pro
duct; ignored.
(Bundled) cc: warning 422: Unknown option "f" ignored.
(Bundled) cc: warning 480: The +Onolimit option is available only with the C/ANS
I C product; ignored.
(Bundled) cc: warning 480: The +Opromote_indirect_calls option is available only
 with the C/ANSI C product; ignored.
cpp: "/opt/perl_32/lib/5.8.8/PA-RISC1.1-thread-multi/CORE/perlio.h", line 121: e
rror 4065: Recursion in macro "PerlIO".
*** Error exit code 1

Stop.
*** Error exit code 1
And when I try to execute the script it gives me this error :

Code:
Can't locate Net/Telnet.pm in @INC (@INC contains: /opt/perl_32/lib/5.8.8/PA-RIS
C1.1-thread-multi /opt/perl_32/lib/5.8.8 /opt/perl_32/lib/site_perl/5.8.8/PA-RIS
C1.1-thread-multi /opt/perl_32/lib/site_perl/5.8.8 /opt/perl_32/lib/site_perl /o
pt/perl_32/lib/vendor_perl/5.8.8/PA-RISC1.1-thread-multi /opt/perl_32/lib/vendor
_perl/5.8.8 /opt/perl_32/lib/vendor_perl .) at ./t1 line 4.
BEGIN failed--compilation aborted at ./t1 line 4.
Last thing may helps you to resolve my issue is I have this version of perl :
Code:
This is perl, v5.8.8 built for PA-RISC1.1-thread-multi

Thanks a lot for your help
  #2 (permalink)  
Old 04-06-2008
era era is offline Forum Advisor  
Herder of Useless Cats (On Sabbatical)
  
 

Join Date: Mar 2008
Location: /there/is/only/bin/sh
Posts: 3,652
The prompt regular expression means any character (.) zero or more times (*) followed by either # or > or ), followed by whitespace (\s), zero or more occurrences (*), followed by end of line ($). Read up on regular expressions; it's time well invested.

Installing the module obviously failed. Looks like you need to find a C compiler which is a "C/ANSI C product" for your platform. It might be as simple as rearranging your PATH to make /opt/path/to/secret/ansi/cc come before /usr/bin/sucky/old/legacy/we/hate/our/customers/cc but really, google for a bit and read the documentation for your platform's compiler alternatives.
  #3 (permalink)  
Old 04-06-2008
era era is offline Forum Advisor  
Herder of Useless Cats (On Sabbatical)
  
 

Join Date: Mar 2008
Location: /there/is/only/bin/sh
Posts: 3,652
... or see if you can find GCC for your platform.

Quick googling turned up similar problems in other Perl modules; Mysql-DBD Perl module Installation Problem in HPUX looks vaguely helpful for solving the problem, and https://sourceforge.net/tracker/?fun...group_id=10127 suggests that this is a bug in the C compiler for HP-UX.

As such, the configure script ought to know about these issues, and not produce an incorrect Makefile for your platform. Maybe you could submit a bug report about this, although I can't tell exactly whose bug that is.

Last edited by era; 04-06-2008 at 05:17 AM.. Reason: Maybe submit a bug report
  #4 (permalink)  
Old 04-06-2008
Darknight Darknight is offline
Registered User
  
 

Join Date: Jan 2005
Posts: 4
Thanks a lot for your help Era

I am using HP UX, but I have another hardware with same specs and working fine.
Anyhow I will try to Google it ,
But please If there is any body has quick solution, HELP ME
  #5 (permalink)  
Old 04-07-2008
xist xist is offline
Registered User
  
 

Join Date: Nov 2007
Posts: 7
I have an issue with one device, that doesn't return prompt like # at the end of output. It simply give a new line. But output can containt a few lines. Which kind of "prompt" can I put here to Net::Telnet??
  #6 (permalink)  
Old 04-10-2008
anhtt anhtt is offline
Registered User
  
 

Join Date: Nov 2007
Posts: 22
continue perl telnet

I need to telnet to a sun servervia 9023 port.
Normally, I can telnet directly as below:
telnet 10.2.4.9 9023
Trying 10.2.4.9...
Connected to 10.2.4.9.
Escape character is '^]'.
900 Login required.
login username passwd
login username passwd
102 2 records.
Lucent NavisRadius Radius Server, Version 4.5.8 (Build 551-060)
Copyright (c) 1998-2005 Lucent Technologies Inc. All Rights Reserved.
==>

I tried to use Net::Telnet with the code following:

#!/usr/bin/perl -w
use Net::Telnet ();
$t = new Net::Telnet (Timeout => 10,Port => 9023,Prompt => '/==> $/');
$t->open("10.2.4.9");
$t->waitfor("900 Login required. $/i");
$t->print("login username passwd");


But it's not successful. This is the error message:

missing opening delimiter of match operator in argument "900 Login required.i" given to Net::Telnet::waitfor() at ./try line 5

How can i fix it ?
  #7 (permalink)  
Old 04-10-2008
era era is offline Forum Advisor  
Herder of Useless Cats (On Sabbatical)
  
 

Join Date: Mar 2008
Location: /there/is/only/bin/sh
Posts: 3,652
It doesn't like the slash because it's (stupidly, buggily) using that internally as a regex separator, apparently. Try backslash-escaping it. Or, if it's meant as a regex separator, put in the missing opening separator.
Sponsored Links
Closed Thread

Bookmarks

Tags
regex, regular expressions

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes Rate This Thread
Rate This Thread:

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

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT -4. The time now is 11:07 PM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
The UNIX and Linux Forums Content Copyright ©1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant URLs by vBSEO 3.2.0