#!/usr/bin/env perl #use strict; use Net::SNMP; use Socket; my $switch = shift(@ARGV); my $rocomm_switch = shift(@ARGV);; my $debug = 0; ########## # Get the IP/MAC map from the device ########## my ($session, $error) = Net::SNMP->session( -hostname => $switch, -version => 'snmpv1', -community => $rocomm_switch ); if (!defined($session)) { print "ERROR:\n\n"; print "$error\n"; exit 1; } my $result = $session->get_table( -baseoid => '.1.3.6.1.2.1.4.22.1.2' ); foreach (keys %$result) { # Capture IP Address in SNMP OID: (.*) = $2 /(\.1\.3\.6\.1\.2\.1\.4\.22\.1\.2\.\d+\.)(.*)$/; print "$_" . " %$result->{$_} \n" if($debug); my $mac = %$result->{$_}; my $ip = $2; if(true){ print "OK,"; print "$ip,"; # IP Address # $mac =~ s/^0x//; # $mac =~ s/([a-zA-Z0-9]{2})(?!$)/\1-/g; print "$mac" . "\n"; # MAC Address }else{ print "ERROR,"; print "$ip,"; # IP Address print "Bad MAC Returned." . "\n"; } } $session->close(); ##########