LD Port Report Project aka Switch Port Mapper Tool
Linux Dynasty Projects - Switch Port Report
Written by Allen Sanabria   
Tuesday, 05 May 2009 03:10

The Port Report Project is essentially a Switch Port Mapper Tool or a Switch Port Mapping Tool like a few other commercial products out there, except The Port Report Project is free. Right now there is no GUI or WEB interface for the project but it is in the works.

This project started off as being a simple 150 line script that did something quite simple... Its only purpose was to find MAC Addresses on a switch. Then I was asked could you also search by IP, so I added that. Now I was asked to search by Port, so I added that. Well you get where this is all going.... My goal now is to build the equivalent of other commercial port mapping tools, but Open Source....

On this page I will be keeping all the updates to this Project, so please keep checking back every now and again for updates.
You can get any revision of the Port Report tool here http://www.linuxdynasty.org/Port-Report-Project/

 Download LD Port Report
File Title:LD Port Report (Details)
File Type:py
File Version:1.13
File Size:43.83 Kb
License:
File Author:Allen Sanabria
File HomePage:
Downloads:578
Rating: ( Votes)
Your Vote:

Any issues with the LD Port Report Project, please discuss here in the forums
This script requires, Pysnmp and Pyasn1. If you have python-setuptools, you can install it by running this..
easy_install pysnmp, easy_install pyasn1

Three things you will need for this script to work..

  1. Pysnmp
  2. Pyasn1
  3. SNMP Access to the switch you want to talk too and its community string.

To make your life easier you should do the following
  1. install python-setuptools
  2. then run easy_install pysnmp
  3. and easy_install pyasn1
  4. or you can download the 2 modules manually.
    pysnmp and pyasn1
  5. then unzip the 2 files and in each directory run python setup.py install

I am using the following revisions from the python cheese shop pysnmp 4.1.12a and pyasn1 0.0.9a

For revision 1.12 and above..... If you installed pyasn1 and pysnmp using easy_install. Please uninstall it now and install the newest revision and run python setup.py install Instead of using easy_install.
Revision history and Examples below.....

Revision 1.13 10/01/09

  • Fixed line 348 as per christianha. return nmac.lower()
    This fix will allow you to pass a MAC in all uppercase and still match though the switch is responding in lowercase.
    00 E0 B8 81 E8 B7 will now match 00 e0 b8 81 e8 b7

Revision 1.12 09/18/09

  • The report option of the script can now follow cdp neighbors using the --follow option or -f.
    When you run the command below it will create ONE CSV file per cdp neighbor it scanned.
    I was able to scan from my core Switch down to the last neighbor in the line ( 44 Neighbors in just under 20 minutes. )
    Which equaled to a little over 4K Mac Addresses
    For instance...port_report.py -d 192.168.101.1 -c public -r -f

Revision 1.11 09/13/09

  • More code clean up and another increase in speed.
  • Also port_report can now follow EtherChannel
  • Added better verbosity
  • Added Sanity Checking for cdp neighbors

Revision 1.10 09/09/09

  • Code Clean up and a slight increase in speed ( by a few seconds ) during the search by mac or ip

Revision 1.9
Code changes and Added CDP Support

  • Detect CDP Neighbors during the scan for MAC Addresses or IP Addresses

Revision 1.8
Here is a quick update.....

  • I just add dns reverse lookups to the output of this script.

Revision 1.7
Adds support to the following devices..

  1. Cisco
    • Catalyst 6509 w/ Supervisor 720 running IOS
    • Catalyst 3560
    • Catalyst 3550 (SMI)
    • Cisco CIGESM series Chassis Blades
    • Cisco Catalyst 2960
  2. Foundry
    • Foundry Server Iron
  3. Nortel
    • Nortel Passport 8600
    • Nortel 5520 Ethernet Routing Switch
  4. HP
    • HP Procurve 5406xl

 

Revision 1.6
New additions to this revision ....

  • Support for HP Procurve Switches, ( Tested on the newer versions of HP )
  • combined switch_report.py in port_report.py.
  • Added --verbose flag

Previous Releases....

  • Search by MAC or IP or PORT

 



EXAMPLES BELOW...

Below is an example of the integrated CDP following of switches using the -m ( --mac ) option

python port_report.py -d switch -c community -m "00 13 20 16 5f f7"
Switch Connected to 192.168.101.1
SwitchPort = GigabitEthernet10/3
SwitchPortSpeed = 1000mb
SwitchPortDuplex = fullDuplex
SwitchVlan = vlan176
SnmpHostName = requestTimedOut
SnmpHostDescr = requestTimedOut
HostMAC = 00 13 20 16 5f f7
HostIP = 192.168.101.101
HostName = Pointer Record Not set for 192.168.101.101

Found 00 13 20 16 5f f7 on 192.168.101.5

Switch Connected to 192.168.101.5
SwitchPort = GigabitEthernet0/24
SwitchPortSpeed = 1000mb
SwitchPortDuplex = fullDuplex
SwitchVlan = vlan176
SnmpHostName = No SNMP Access
SnmpHostDescr = No SNMP Access
HostMAC = 00 13 20 16 5f f7
HostIP = None
HostName = None

Found 00 13 20 16 5f f7 on 192.168.101.6

Switch Connected to 192.168.101.6
SwitchPort = GigabitEthernet0/22
SwitchPortSpeed = 1000mb
SwitchPortDuplex = fullDuplex
SwitchVlan = vlan176
SnmpHostName = No SNMP Access
SnmpHostDescr = No SNMP Access
HostMAC = 00 13 20 16 5f f7
HostIP = None
HostName = None

This MAC 00 13 20 16 5f f7 was finally traced to this switch 192.168.101.6

Below I will show you an example of the listing of MAC Addresses per Port using the n (--pname) option

python port_report.py -d 192.168.101.1 -c community -n "10/3"
SwitchPort = GigabitEthernet10/3
SwitchPortSpeed = 1000mb
SwitchPortDuplex = fullDuplex
SwitchVlan = vlan176
SnmpHostName = requestTimedOut
HostDescr = requestTimedOut
HostMAC = 00 22 64 bb 3e 17
HostIP = 192.168.101.146
HostName = Pointer Record Not set for 192.168.101.146

SwitchPort = GigabitEthernet10/3
SwitchPortSpeed = 1000mb
SwitchPortDuplex = fullDuplex
SwitchVlan = vlan176
SnmpHostName = requestTimedOut
HostDescr = requestTimedOut
HostMAC = 00 0c f1 bb bf eb
HostIP = 192.168.101.147
HostName = Pointer Record Not set for 192.168.101.147

SwitchPort = GigabitEthernet10/3
SwitchPortSpeed = 1000mb
SwitchPortDuplex = fullDuplex
SwitchVlan = vlan176
SnmpHostName = requestTimedOut
HostDescr = requestTimedOut
HostMAC = 00 20 4a 83 20 97
HostIP = 192.168.101.30
HostName = Pointer Record Not set for 192.168.101.30

Below is an example of running the --report option.. Also the report option will save the output to disk in a CSV file.

python port_report.py -d 192.168.101.5 -c community --report
GigabitEthernet0/1,00 1c c0 12 6a 8b,None,None,vlan180,up,up,fullDuplex,1000mb,
GigabitEthernet0/1,00 20 4a 12 2b 68,None,None,vlan180,up,up,fullDuplex,1000mb,
GigabitEthernet0/1,00 12 44 94 dc 40,192.168.101.132,Pointer Record Not set for 192.168.101.132,vlan180,up,up,fullDuplex,1000mb,
GigabitEthernet0/1,00 21 5a c7 81 16,None,None,vlan180,up,up,fullDuplex,1000mb,
GigabitEthernet0/3,00 20 4a 12 2b 71,None,None,vlan180,up,up,halfDuplex,10mb,








Below is an example of searching by IP Addresses -i (--ip)..

python port_report.py -d 192.168.101.1 -c ommunity -i "192.168.101.200"
Switch Connected to 192.168.101.1
SwitchPort = GigabitEthernet1/17
SwitchPortSpeed = 1000mb
SwitchPortDuplex = unknown
SwitchVlan = vlan175
SnmpHostName = zenmon.linuxdynasty.org
SnmpHostDescr = Linux zenmon.linuxdynasty.org 2.6.18-92.1.22.el5 #1 SMP Tue Dec 16 12:03:43 EST 2008 i686
HostMAC = 00 14 38 4f 5e 38
HostIP = 192.168.101.200
HostName = zenmon.linuxdynasty.org


Add this page to your favorite Social Bookmarking websites
Reddit! Del.icio.us! Mixx! Free and Open Source Software News Google! Live! Facebook! StumbleUpon! Yahoo! Free Joomla PHP extensions, software, information and tutorials.
Comments
Search RSS
Only registered users can write comments!

3.22 Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

Last Updated on Thursday, 01 October 2009 08:11