All pastes #677215 Raw Edit

Someone

public text v1 · immutable
#677215 ·published 2007-08-31 20:16 UTC
rendered paste body
#!/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($mac =~ m/^0x/){
           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();

##########