#!/usr/bin/perl # Igor Chubin, 2007 our $community = "public"; our $switch = "192.168.15.100"; open(SNMP,"snmpwalk -On -OQ -v2c -c $community $switch .1.3.6.1.2.1.17.4.3.1.1|") or die "Can't run snmpwalk"; while () { chomp; s@.1.3.6.1.2.1.17.4.3.1.1@@; my ($oid, $mac) = split /=\s*/; $_=$mac; s@"@@g; s@\s*$@@; s@ @:@g; s@(.)@\l\1@g; s@^0@@; s@:0@:@g; $mac_table{$_}=$oid; } close(SNMP); open(SNMP,"snmpwalk -On -OQ -v2c -c $community $switch .1.3.6.1.2.1.17.4.3.1.2|") or die "Can't run snmpwalk"; while () { chomp; s@.1.3.6.1.2.1.17.4.3.1.2@@; my ($oid, $port) = split /=/; $ports_table{$oid}=$port; } close(SNMP); for $oid (keys %mac_table) { print "$oid -> ".$ports_table{$mac_table{$oid}}."\n"; }