【发布时间】:2014-03-21 06:56:36
【问题描述】:
我正在通过 perl 脚本在 cisco 交换机上使用命令“show mac-address-table dynamic”。相同的输出如下:
Legend: * - primary entry
age - seconds since last seen
n/a - not available
vlan mac address type learn age ports
------+----------------+--------+-----+----------+--------------------------
* 14 782b.cb87.b085 dynamic Yes 5 Gi4/39
* 400 0017.c59a.23aa dynamic Yes 15 Gi3/37
* 400 0017.c59a.23aa dynamic Yes 5 Gi1/27
* 400 0017.c50f.704d dynamic Yes 5 Gi13/19
* 400 0006.8b05.a915 dynamic Yes 10 Gi5/29
* 400 c0ea.e414.2f29 dynamic Yes 10 Gi3/37
* 400 0017.c53e.166d dynamic Yes 5 Gi1/12
我正在编写一个脚本,它只取出具有初始前 4 位数字的 mac 地址,例如 0017.c5 或 0006b 或 c0ea.e4。此外,它应该显示它们重复的次数。我尝试编写以下代码:
for my $line (@ver) {
if (my ($mac_addr) = $line =~ /((?:[0-9a-f]{4}\.){2}[0-9a-f]{4})/) {
$mac_addr = $1;
if ($mac_addr =~ m/^(0017.c5)[0-9a-f]{2}.[0-9a-f]{4}/ or $mac_addr =~ m/^(c0ea.e5)[0-9a-f]{2}.[0-9a-f]{4}/ or $mac_addr =~ m/^(0006.b)[0-9a-f]{3}.[0-9a-f]{4}/){
push (@sonic_macaddr, $mac_addr);
for $it (@sonic_macaddr){
$uniq{$it}++;
}
}
}
}
print (Dumper(\%uniq));
我没有得到所需的结果。请问有人可以指导我哪里出错了吗?谢谢。
【问题讨论】: