CJXJ220 has asked for the wisdom of the Perl Monks concerning the following question:
I'm trying to cut my teeth on doing some pattern matching for a project I am working on for my job. As an exercise I have a written a script which telnets into a Cisco router and should return an inventory of all of the T1 interfaces on that device, making a note of which interfaces are voice PRIs.
To check for an interface I show the running configuration filtered by sections which contain the line controller T1. The problem I'm running into is the code is only returning the first match of the four interfaces that are on the router I am testing with.
Here is my code below:Here is the output from the script as it is now:use Net::Ping; use Net::Telnet::Cisco; use Getopt::Long; my $host = ""; my $interface = ""; my $PRIList = ""; my $T1List = ""; my $T1Count = 0; my $PRICount = 0; GetOptions("host:s" => \ $host); if (!$host) { print "usage: perl regexp_test.pl --host=(IPAddress)"; exit; } my $p = Net::Ping->new(); if ($p->ping($host)) { print "\nDevice is online, connecting...\n\n"; my $session = Net::Telnet::Cisco->new(Host => $host); $session->login('user', 'password'); $session->cmd("term len 0"); print "Retrieving T1 controller details...\n\n"; my @check = $session->cmd("sh run | s controller T1"); print "@check\n"; while (<@check>) { # match an interface number e.g. 0/0/0, 0/1/0, etc if (m^\G[0-9]/[0-9]/[0-9]^) { $interface = $_; $T1Count++; $T1List = join ($T1List,$interface,"\n"); } # check if the interface is a PRI (pri-group timeslots 1-24) if (m^\Gpri-group^) { $PRICount++; $PRIList = join ($PRIList,$interface,"\n"); } } if ($T1Count > 0) { print "T1 Controller Summary:\n\n"; print "$T1Count total T1 interfaces\n"; print $T1List; print "$PRICount total voice PRI(s)\n"; print $PRIList; } else { print "No T1 interfaces found"; } $session->close; } else { print "\nDevice OFFLINE!! Connection aborted!!\n\n"; } $p->close();
Based on the return of the output of the show command I am expecting the output to be this:C:\perl scripts>perl regexp_test.pl --host 10.22.49.19 Device is online, connecting... Retrieving T1 controller details... controller T1 0/0/0 framing esf linecode b8zs cablelength long 0db pri-group timeslots 1-24 controller T1 0/0/1 framing esf linecode b8zs cablelength long 0db controller T1 0/1/0 framing esf linecode b8zs cablelength long 0db controller T1 0/1/1 framing esf linecode b8zs cablelength long 0db T1 Controller Summary: 1 total T1 interfaces 0/0/0 1 total voice PRI(s) 0/0/0
Any ideas what I am doing wrong that I'm not getting the desired output? Any help you can provide is greatly appreciated.C:\perl scripts>perl regexp_test.pl --host 10.22.49.19 Device is online, connecting... Retrieving T1 controller details... controller T1 0/0/0 framing esf linecode b8zs cablelength long 0db pri-group timeslots 1-24 controller T1 0/0/1 framing esf linecode b8zs cablelength long 0db controller T1 0/1/0 framing esf linecode b8zs cablelength long 0db controller T1 0/1/1 framing esf linecode b8zs cablelength long 0db T1 Controller Summary: 4 total T1 interfaces 0/0/0 0/0/1 0/1/0 0/1/1 1 total voice PRI(s) 0/0/0
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Regular Expressions question
by roboticus (Chancellor) on Oct 29, 2012 at 19:05 UTC | |
|
Re: Regular Expressions question
by NetWallah (Canon) on Oct 29, 2012 at 19:11 UTC | |
|
Re: Regular Expressions question
by CJXJ220 (Initiate) on Oct 29, 2012 at 20:20 UTC | |
by 2teez (Vicar) on Oct 29, 2012 at 21:02 UTC | |
by NetWallah (Canon) on Oct 29, 2012 at 22:14 UTC | |
by Lotus1 (Vicar) on Oct 30, 2012 at 03:24 UTC | |
by NetWallah (Canon) on Oct 29, 2012 at 20:49 UTC | |
|
Re: Regular Expressions question
by CJXJ220 (Initiate) on Oct 30, 2012 at 19:20 UTC |