Re: Perl and Net::Telnet (157 Views)
Reply
Advisor
Jeff Martin_3
Posts: 47
Registered: ‎06-10-2003
Message 1 of 2 (157 Views)
Accepted Solution

Perl and Net::Telnet

I have written the following script to access one of my cisco 3524
swithes:

use Net::Telnet ();
$t = new Net::Telnet (Timeout => 1, Errmode=>'die');
$t->open("sbr-3524-1.conpap.com");
$t->waitfor('/Password\:\s/i');
$t->print("xxxxxxx");
$t->waitfor('/SBR-3524-1\>/i');
@lines = $t->cmd("who");
print @lines;
$t->close();

The script times out at the following line:

@lines = $t->cmd("who");

I get a "command timed-out at U:\PerlScripts\test2.pl line 7"

If i comment out the above line the script executes, I believe the
waitfor line works fine, my actual prompt is SBR-3524-1>

$t->waitfor('/SBR-3524-1\>/i');

I have staired at this for hours, any help is appreciated. What am I
doing wrong.

Thanks.
Please use plain text.
Acclaimed Contributor
A. Clay Stephenson
Posts: 17,825
Registered: ‎07-16-1998
Message 2 of 2 (157 Views)

Re: Perl and Net::Telnet

Hi Jeff:

I'm going to give you the most valuable Perl lesson I know: add the -w to generate warnings and use strict:

viz:

#!/usr/bin/perl -w

use strict;

use Net::Telnet ();
my $t = new Net::Telnet (Timeout => 5, Errmode=>'die');
$t->open("sbr-3524-1.conpap.com");
$t->waitfor('/Password\: /i');
$t->print("xxxxxxx");
$t->waitfor('/SBR-3524-1\>/i');
my @lines = $t->cmd("help");
print "Lines: ",@lines,"\n";
$t->close();

Note that with -w you will see that your \s is not a recognized pattern. I changed your "who" to "help" because the "who" command is not recoginized on a Catalyst 5500 although I assume "who" is a valid command on a 3524.

If it ain't broke, I can fix that.
Please use plain text.
The opinions expressed above are the personal opinions of the authors, not of HP. By using this site, you accept the Terms of Use and Rules of Participation