Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Query MAC address from 3com switch (final solution)

by jankovig (Novice)
on Dec 05, 2001 at 10:14 UTC ( [id://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;
Replies are listed 'Best First'.
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............

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (3)
As of 2024-04-20 02:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found