Perl variables inside Net::Telnet::Cisco Module doesn't work


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Perl variables inside Net::Telnet::Cisco Module doesn't work
# 1  
Old 12-21-2010
Perl variables inside Net::Telnet::Cisco Module doesn't work

I am writing perl script to configure Cisco device but Variables inside Net::Telnet::Cisco Module doesn't work and passed to device without resolving.

Please advise.

here is a sample of script:
Code:
use Net::Telnet::Cisco;
$device = "10.14.199.1";
($o1, $o2, $o3, $o4) = split(/\./,$device);
print "$o1\n";
print "$o2\n";
print "$o3\n";
print "$o4\n";
my $session = Net::Telnet::Cisco->new(Host => '$device');
$session->login('cisco', 'cisco');
$session->cmd('conf t');
@output = $session->cmd('ip dhcp excluded-address 172.18.$o3.1 172.18.$o3.20');
print "@output\n";
@output = $session->cmd('ip dhcp excluded-address 10.14.$o3.130 10.14.$o3.145');
print "@output\n";
 
$session->close;

The variables with red color don't resolved.
please advise.

---------------------------

I got the following output:
Code:
C:\Users\Administrator>perl c:\Scripts\dhcp.pl
Can't locate auto/Net/Telnet/Cisco/autosplit.ix in @INC (@INC contains: F:/Perl/
site/lib F:/Perl/lib .) at F:/Perl/lib/AutoLoader.pm line 173.
at F:/Perl/lib/Net/Telnet/Cisco.pm line 18
10
14
199
1
unknown remote host: $device at c:\Scripts\dhcp.pl line 12

when I manually resolve the $device variable, I got the following output:
Code:
 
C:\Users\Administrator>perl c:\Scripts\dhcp.pl
Can't locate auto/Net/Telnet/Cisco/autosplit.ix in @INC (@INC contains: F:/Perl/
site/lib F:/Perl/lib .) at F:/Perl/lib/AutoLoader.pm line 173.
at F:/Perl/lib/Net/Telnet/Cisco.pm line 18
10
14
199
1
Last command and router error:
R2(config)#ip dhcp excluded-address 172.18.$o3.1 172.18.$o3.20
                                                        ^
% Invalid input detected at '^' marker.

-----------------------
note: ^ is under $ not as it appears.
------------------------

Moderator's Comments:
Mod Comment ^ would have been under $ if you had used code tags Smilie You got a PM with a guide.

Last edited by Scott; 12-21-2010 at 02:08 PM..
# 2  
Old 12-21-2010
The answer is quite simple: single quotes, unlike double quotes, won't interpolate the content of the variable, but take the string as is. See perldoc perlop for details on quoting.
This User Gave Thanks to pludi For This Post:
# 3  
Old 12-22-2010
Hello,

Thanks for your reply, it work fine but I have another problem.

this the whole script:
Code:
use Net::Telnet::Cisco;
$device = "10.14.199.1";
($o1, $o2, $o3, $o4) = split(/\./,$device);
print "$o1\n";
print "$o2\n";
print "$o3\n";
print "$o4\n";
my $session = Net::Telnet::Cisco->new(Host => "$device");
$session->login("cisco", "cisco");
$session->cmd("conf t");
@output = $session->cmd("ip dhcp excluded-address 172.18.$o3.1 172.18.$o3.20");
print "@output\n";
@output = $session->cmd("ip dhcp excluded-address 10.14.$o3.130 10.14.$o3.145");
print "@output\n";
@output = $session->cmd("ip dhcp excluded-address 10.14.$o3.230 10.14.$o3.254");
print "@output\n";
@output = $session->cmd("ip dhcp pool Users-pool");
print "@output\n";
@output = $session->cmd("network 10.14.$o3.128 255.255.255.128");
print "@output\n";
@output = $session->cmd("default-router 10.14.$o3.129");
print "@output\n";
@output = $session->cmd("dns-server 10.11.0.80 10.11.0.81 10.11.0.79 192.168.250.250 192.168.250.251");
print "@output\n";
@output = $session->cmd("ip dhcp pool Remedy-pool");
print "@output\n";
@output = $session->cmd("network 10.15.$o3.0 255.255.255.0");
print "@output\n";
@output = $session->cmd("default-router 10.15.$o3.1");
print "@output\n";
@output = $session->cmd("dns-server 10.11.0.80 10.11.0.81 10.11.0.79 192.168.250.250 192.168.250.251");
print "@output\n";
@output = $session->cmd("ip dhcp pool Voice");
print "@output\n";
@output = $session->cmd("network 172.18.$o3.0 255.255.255.0");
print "@output\n";
@output = $session->cmd("default-router 172.18.$o3.1");
print "@output\n";
@output = $session->cmd("option 150 ip 172.17.40.10");
print "@output\n";
$session->close;


but I have the following error:
Code:
C:\Users\Administrator>perl c:\Scripts\dhcp.pl
Can't locate auto/Net/Telnet/Cisco/autosplit.ix in @INC (@INC contains: F:/Perl/
site/lib F:/Perl/lib .) at F:/Perl/lib/AutoLoader.pm line 173.
 at F:/Perl/lib/Net/Telnet/Cisco.pm line 18
10
14
199
1
 
command timed-out at c:\Scripts\dhcp.pl line 17

# 4  
Old 12-22-2010
As for the autosplit.ix error: how did you install the module, and what Perl distribution do you use? ActiveState?

The timeout probably means that the device didn't answer after a certain period of time. Check the documentation for Net::Telnet::Cisco on how to increase the timeout, or if the device has a problem with the command at line 17.
This User Gave Thanks to pludi For This Post:
# 5  
Old 12-22-2010
Thanks for your interest.

I have active perl 5.8.9 on windows but I don't find the "Net::Telnet::Cisco" module by default so I download only "Cisco.pm" file and paste it in perl. (it seems that this is not correct, isn't it?).

Please advise where I can find the whole package and how to install it??

on the other hand the device doesn't have a problem with any command.

Thanks,
# 6  
Old 12-22-2010
It's available through ActiveStates PPM, although not in the default repository. Installation instructions can be found here.

As for the timeout, look through the documentation for the new() method, there's a timeout parameter that can be set globally, as well as for each cmd() individually. Test the commands with a device to find the time it needs to complete successfully.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. AIX

PING to AIX works but TELNET FTP SSH doesn't work

root@PRD /> rsh DR KFAFH_DR: protocol failure due to unexpected closure from server end root@PRD /> telnet DR Trying... Connected to DR. Escape character is '^]'. Connection closed. root@PRD /> ftp DR Connected to KFAFH_DR. 421 Service not available, remote server has closed connection... (2 Replies)
Discussion started by: filosophizer
2 Replies

2. Shell Programming and Scripting

Switching user inside a shell script doesn't seem to work

Linux version : Oracle Linux 6.4 Shell : Bash The following script will be run as root. During the execution, it should switch to oracle user and execute few commands. After googling and searching within unix.com , I came up with the following syntax ## Enclosing all commands in double... (7 Replies)
Discussion started by: John K
7 Replies

3. Shell Programming and Scripting

Perl Telnet cisco routers

Hi all i have little problem finding solution about simple telnet script .... i have 250 routers and on some i have different password and on some they ask just for password no username. So for example 1,2,3 have username and password (user,password) 4, and 5 have different username and password... (0 Replies)
Discussion started by: IvanMP
0 Replies

4. Shell Programming and Scripting

perl Net::SNMP version getting info from cisco switch

I am having trouble working with SNMP module with perl. I am trying to get SNMP version of target system. I use following code to get it however it resturns error as "Argument "v6.0.1" isn't numeric in numeric lt (<) at ./chk_env_upd.pl line 447." Get load table my $resultat =... (1 Reply)
Discussion started by: dynamax
1 Replies

5. Shell Programming and Scripting

perl telnet issue with cisco

Hi Experts, I am using perl to telnet on cisco boxes. We have this stupid cisco node which does not support "terminal Length0" command. Since I am using Net::Telnet and capturing output with @output = $telnet->cmd('cmd'); Say @output = $telnet->cmd('show version'); Now problem... (2 Replies)
Discussion started by: mtomar
2 Replies

6. Shell Programming and Scripting

cd command doesn't work through variables

Hi.... cd command is not working when dual string drive/volume name is passed to cd through variables....... For Ex.... y=/Volumes/Backup\ vipin/ cd $y the above command gives error....... anyone with a genuine solution ? (16 Replies)
Discussion started by: vipinchauhan222
16 Replies

7. Shell Programming and Scripting

Need help on use of "cmd" command in net::Telnet module in PERL

in "cmd" command i want to copy the ouput of the command excuted to a particular file in a directory. How to do this..?? Ex : $telnet->cmd(String => 'allip:acl=a1;',Prompt => '/</'); i want to copy o/p of the command "allip:acl=a1;" in a log file in a particular directory. Plz suggest.. (1 Reply)
Discussion started by: sudhakaryadav
1 Replies

8. Windows & DOS: Issues & Discussions

Need Help on "waitfor" command in net::Telnet Module in PERL

Hi, Can anybody help me in writing command "waitfor" for string "C:\WINNT\Profiles\mfcf0508>" while using net::Telnet module. I tried the below format : $telnet->waitfor('/"C\:\WINNT\Profiles\mfcf0508>".*$/i'); Getting error as : pattern match timed-out Plz help me (3 Replies)
Discussion started by: sudhakaryadav
3 Replies

9. Shell Programming and Scripting

Perl telnet to cisco router and compare the ping ms

All Please help, i will telnet to router to obain the ping status and compare, if higher than normal latency, i will have further action.. if i do the telent and in perl script then .... e.g the result i obtain from the router will be =' Success rate is 100 percent (5/5), round-trip... (4 Replies)
Discussion started by: optimus
4 Replies

10. UNIX for Dummies Questions & Answers

Script doesn't work, but commands inside work

Howdie everyone... I have a shell script RemoveFiles.sh Inside this file, it only has two commands as below: rm -f ../../reportToday/temp/* rm -f ../../report/* My problem is that when i execute this script, nothing happened. Files remained unremoved. I don't see any error message as it... (2 Replies)
Discussion started by: cheongww
2 Replies
Login or Register to Ask a Question