in reply to
Regular Expressions question
Hi All,
It's working! :)
The \G modifier was preventing the subsuequent matches. I had included it because to my understanding it would allow the next m// to start where the previous had left off, but I guess that only applies if you are also using the global match operator \g. Once that was removed I just had to make a few tweaks to get the output formatted the way I wanted.
Here is the working code and output:
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";
for(@check)
{
# match an interface number e.g. 0/0/0, 0/1/0, etc
if (m^([0-9]/[0-9]/[0-9])^)
{
$interface = $1;
$T1Count++;
$T1List = $T1List . $interface . "\n";
}
# check if the interface is a PRI (pri-group timeslots 1-24)
if (m^pri-group^)
{
$PRICount++;
$PRIList = $PRIList . $interface . "\n";
}
}
if ($T1Count > 0)
{
print "T1 Controller Summary:\n\n";
print "$T1Count total T1 interfaces\n";
print "$T1List\n";
print "$PRICount total voice PRI(s)\n";
print "$PRIList\n";
}
else
{
print "No T1 interfaces found";
}
$session->close;
}
else
{
print "\nDevice OFFLINE!! Connection aborted!!\n\n";
}
$p->close();
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
Thanks everyone for your help, greatly appreciated!