Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Query MAC address from 3com switch (final solution)

by jankovig (Novice)
on Dec 05, 2001 at 10:14 UTC ( #129534=sourcecode: print w/ replies, xml ) Need Help??

Category:
Author/Contact Info
Description: This is the working code. Feel free to use/modify code to your liking.

#! /usr/local/bin/perl

eval '(exit $?0)' && eval 'exec /usr/local/bin/perl $0 ${1+"$@"}'
&& eval 'exec /usr/local/bin/perl $0 $argv:q'
if 0;


#====================================================================
#
#           QUERY MAC ADDRESSES FROM 3COM SWITCH
#
#    The following program automatically gets a list of MAC 
#    addresses on a 3com switch and which port each address 
#    is on using Ethernet MIB:dot1dTpFdbTable.
#
#    NOTE:  Portions of this code used from David M. Town <dtown@cpan.
+org>
#           table.pl
#
#====================================================================


use strict;
use Net::SNMP qw(snmp_dispatcher oid_lex_sort);

#=== Setup session to remote host ===
my ($session, $error) = Net::SNMP->session(
   -hostname  => $ARGV[0] || 'localhost',
   -community => $ARGV[1] || 'public',
   -port      => $ARGV[2] || 161
);
#=====================================

#=== Was the session created? ===
if (!defined($session)) {
   printf("ERROR: %s\n", $error);
   exit 1;
}
#==================================

#=== OIDs queried to retrieve information ====
my $TpFdbAddress = '1.3.6.1.2.1.17.4.3.1.1';
my $TpFdbPort    = '1.3.6.1.2.1.17.4.3.1.2';
#=============================================


#=== Print the returned MAC addresses ===
printf("\n== MAC Addresses: %s ==\n\n", $TpFdbAddress);

my $result;

if (defined($result = $session->get_table(-baseoid => $TpFdbAddress)))
+ {
   foreach (oid_lex_sort(keys(%{$result}))) {
      printf("%s => %s\n", $_, $result->{$_});
   }
   print "\n";
} else {
   printf("ERROR: %s\n\n", $session->error());
}
#==========================================

#=== Print the returned MAC ports ===
printf("\n== MAC Ports: %s ==\n\n", $TpFdbPort);

my $result;

if (defined($result = $session->get_table(-baseoid => $TpFdbPort))) {
   foreach (oid_lex_sort(keys(%{$result}))) {
      printf("%s => %s\n", $_, $result->{$_});
   }
   print "\n";
} else {
   printf("ERROR: %s\n\n", $session->error());
}
#=============================================

#=== Close the session and exit the program ===
$session->close;
exit 0;

Comment on Query MAC address from 3com switch (final solution)
Download Code
Re: Query MAC address from 3com switch (final solution)
by Anonymous Monk on Apr 10, 2003 at 07:26 UTC
    No need to declare 'snmp_dispatcher' because you don't use non-blocking SNMP request.
      At me switch are incorporated in a stack and on it of number of ports I happen more than 80, how to make what numbers were real?
      Hi, when iam executing the code, its working fine but there is a problem in displaying the mac address. iam getting an out put 1.3.6.1.2.1.17.4.3.1.1.0.24.139.134.215.118=>v 1.3.6.1.2.1.17.4.3.1.1.0.24.139.248.69.14=>E 1.3.6.1.2.1.17.4.3.1.1.0.24.254.191.236.128=> 1.3.6.1.2.1.17.4.3.1.1.0.24.254.191.236.186=> 1.3.6.1.2.1.17.4.3.1.1.0.26.226.89.148.32=>Y 1.3.6.1.2.1.17.4.3.1.1.0.27.83.127.234.4=> i had tried the code on hp switch ...... iam a student, extracting the mac address of the devices connected to Hp switch is a part of my project. i appreciate anyone to help me in this matter. thanks............

Back to Code Catacombs

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: sourcecode [id://129534]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (8)
As of 2014-08-23 11:49 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (173 votes), past polls