This new script is for Network Engineers and System Engineers a like. Though I must admit it is more for the System Engineers who do not have access to the command line on the CDP enabled device. Have you ever wanted to know what CDP enabled devces ( and info related to those devices ) that were directly connected to your your Core Switch? But you just do not have the access to get that info. But you do have access to the monitoring system, which has SNMP access to the Core Switch.

Well this is where my script comes into play... Stay tuned for updates, as I'm planning on adding to this script. So you can run it with the detail option and a detail port option. Please post any support related question in the forums here..http://www.linuxdynasty.org/forums/Scripting/scripting/sh_cdp_neighbor_help

Revision 1.2 9/13/2009
  • Catch all CDP connected switches, even if there is more then 1 switch seen through 1 port.

Revision 1.1 9/11/2009

  • Added –type option ( –type=detail )
Revision 1.0 9/10/2009
  • This script is the equivalent of sho cdp nei on a cisco switch, but this is using snmp.
When you log into a switch and run a show cdp neighbor, your info might look a little like this.. show cdp neighborCapability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone Device ID Local Intrfce Holdtme Capability Platform Port ID71_5th_SW1 Gig 10/15 145 S I WS-C2960G-Gig 0/48D_M1001_V180_SW1 Gig 1/42 132 S I WS-C2960G-Gig 0/1D_M1001_V181_SW1 Gig 1/46 136 S I WS-C2960G-Gig 0/1D_M1001_V181_SW2 Gig 1/47 166 S I WS-C2960G-Gig 0/1D_M1001_V180_SW3 Gig 1/43 147 S I WS-C2960G-Gig 0/1D_M1001_V181_SW3 Gig 1/48 158 S I WS-C2960G-Gig 0/1D_M1001_V180_SW2 Gig 1/41 141 S I WS-C2960G-Gig 0/1D_M1001_V181_SW4 Gig 1/44 179 S I WS-C2960G-Gig 0/1D_M1001_V180_SW4 Gig 1/40 145 S I WS-C3560G-Gig 0/1D_M701_V177_SW4 Gig 10/7 174 S I WS-C2970G-Gig 0/25D_M701_V177_SW1 Gig 10/6 154 S I WS-C2970G-Gig 0/25Router Gig 10/1 162 R S WS-C6513 Gig 9/9Router1 Gig 10/14 168 R S WS-C6513 Gig 9/1679_18th_Fl_SW1 Gig 10/12 174 S I WS-C2960G-Gig 0/48D_1700_V187_SW1 Gig 10/13 129 S I WS-C3560G-Gig 0/28D_1700_V187_SW3 Gig 10/10 146 S I WS-C2960G-Gig 0/48D_1700_V187_SW2 Gig 10/9 148 S I WS-C2960G-Gig 0/48D_522_V176_SW1 Gig 10/3 121 S I WS-C2970G-Gig 0/25D_522_V176_SW4 Gig 10/4 125 S I WS-C2970G-Gig 0/25D_CL001_V200_SW1 Gig 10/11 125 S I WS-C2960G-Gig 0/242W_4507R Gig 7/2 147 R S I WS-C4507R Gig 3/9

Now this is how it will look if you run sh_cdp_neighbor.py script…

Continue reading “HowTo get CDP neighbor information through Python and SNMP” »

 

 

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.

The other day I was speaking to a buddy of mine. I asked him how cool would it be, if you could just get the port on a switch that you are plugged into, in one line?? So since I thought about it… I figured why not…. I just finished writing the first revision ( I’m assuming more to come). I must say that I am quite pleased with it. Right now you can pass the switch you want to talk too, the community string, and either the MAC or IP address of the host device. In return you will get the MAC Address, IP Address, Port Description (VLAN), and Port you are plugged into.

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.7a  and pyasn1 0.0.6a

 

Revision 2, will even add more features like…

  • Trying to find out what is plugged into a certain Port.
  • Passing a list of switches
  • follow chained switches
  • Gettinginfo from non vlan ports.
  • If you have more ideas, please let me know..

Update 1.7….This is a big update for Port Report…. In this revision the following brands and devices are supported

  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

The Script has been tested with the above devices… If you have run this script against other devices, please let us know. Also the speed in the report function has drastically increased. I ran this script against a 6509 with 800+ devices connected to it in just over 2 minutes.

You can download the script here {quickdown:44}

Update..  revision 1.6 has been released.

  • Support for HP PROCURVE switches
  • Added Verbose option
  • Combined switch_report.py in port_report.py

Update, version 1.4…
Only changes that have been made are below..

  • Code Clean up
  • added check by port name
  • Added Error Checking
  • fixed a few bugs with matching the ifIndex port to the bridgeport

So from the looks of it this script does work on Cisco Switches,which has been tested. But does not work on HP Procurve switches. I would like to add this feature to this script but I do not have HP switches to test on.  If anyone would like me to add this feature to HP switches oranyother manufacturer please let me know and maybe we can work together to get it working.

     example below...    python get_port.py -d "switch" -c "community" -m "mac address"

    MAC Address = 00 14 28 1f 2d 38    IP Address = 192.168.101.100    PortDescr = Vlan175    Port = GigabitEthernet1/17

    python get_port.py -d "switch" -c "community" -i "ip address"

    MAC Address = 00 14 28 1f 2d 38    IP Address = 192.168.101.100    PortDescr = Vlan175    Port = GigabitEthernet1/17

Please post any questions related to this script here.. http://www.linuxdynasty.org/forums/Scripting/scripting/port_report
You can download the script here… get_port.py

python port_report.py -d 192.168.101.1 -c public --report GigabitEthernet1/11,00 21 5a 80 0b a6,192.168.101.23,vlan51,up,up,fullDuplex,1gbps,GigabitEthernet1/12,00 12 79 83 3b f3,192.168.101.24,vlan51,up,up,fullDuplex,1gbps,

python port_report.py -d 192.168.101.1 -c public -i "192.168.101.201"This IPAddress is not in the ARP table

python port_report.py -d 192.168.101.1 -c public -i "192.168.101.202"--verboseFri Apr 24 15:15:41 2009  Main StartedFri Apr 24 15:15:41 2009  In snmpget function Fri Apr 24 15:15:42 2009  Out of snmpget function Cisco Internetwork Operating System Software IOS (tm) s72033_rp Software (s72033_rp-JK9S-M), Version 12.2(17d)SXB7, RELEASE SOFTWARE (fc2)Technical Support: http://www.cisco.com/techsupportCopyright (c) 1986-2005 by cisco Systems, Inc.Compiled ThuFri Apr 24 15:15:42 2009  Finished Checking for macFri Apr 24 15:15:42 2009  Found IPFri Apr 24 15:15:42 2009  192.168.101.202 is a Cisco Switch Fri Apr 24 15:15:42 2009  In generic_mac_or_ip Function00 14 38 4f 5e 38 Fri Apr 24 15:15:42 2009  Looping Through CommTableFri Apr 24 15:15:42 2009  In CommTable For LoopFri Apr 24 15:15:42 2009  First If Statement Fri Apr 24 15:15:42 2009  Looping Through CommTableFri Apr 24 15:15:42 2009  In CommTable For LoopFri Apr 24 15:15:42 2009  Looping Through CommTableFri Apr 24 15:15:42 2009  In CommTable For Loop

python port_report.py -d 192.168.101.1 -c public -i "192.168.101.209"MAC  = 00 14 38 7f 6e 38Port = GigabitEthernet1/17Vlan = 175IPAddr = 192.168.101.209

python port_report.py -d 192.168.101.1 -c public -m "00 14 38 4f 5e 39"MAC  = 00 14 38 4f 5e 39Port = GigabitEthernet1/17Vlan = 175IPAddr = 192.168.101.201

python port_report.py -d 192.168.101.1 -c public -n "1/40"Port 1/40 has the below MAC Addresses associated with itMAC  = 00 1b 95 97 3c 81Port = GigabitEthernet1/40Vlan = 1IPAddr = The IP Address for this MAC is not in the ARP Table

MAC  = 00 15 fa b4 10 06Port = GigabitEthernet1/40Vlan = 174IPAddr = The IP Address for this MAC is not in the ARP Table

Total MAC Addresses associated with this interface 2

python port_report.py -d 192.168.101.1 -c public -n "1/2"Port 1/2 has the below MAC Addresses associated with itMAC  = 08 00 0f 20 b3 aaPort = GigabitEthernet1/2Vlan = 176IPAddr = 192.168.101.104

MAC  = 08 00 0f 21 d3 78Port = GigabitEthernet1/2Vlan = 173IPAddr = 192.168.101.105

MAC  = 08 00 0f 20 b3 aaPort = GigabitEthernet1/2Vlan = 175IPAddr = 192.168.101.115
 

Welcome to part 2 of the “HowTo List Virtual Machines using Python and CIM“. In this part, I modified the original script so that you can pass the Virtual Machine name as well as run it with out the Virtual Machine name. In the first part of this HowTO I created the listVMsInfo.py script witch just listed all the Virtual Machines. So please enjoy the script and hopefully it will make your life just a bit easier.

python listVMsInfo.py -u "http://esxhost" -a "login passwd" -n "testVM"
VM Name 		 testVM
Operating System 	 Suse Linux Enterprise Server 10 (32-bit)
Host Name 		 None
IP Address 		 None
DataStore Used 		 [Esxtestvol] testVM.vmxRequested
State 	 Not ApplicableOperational
Status 	 Enabled
Enabled by Default 	 Enabled
Enabled State 		 Not Applicable

Download this script here!
Download

 

Good morning my fellow Admins, Engineers, Scripters, Programmers, etc….. YOU GET THE IDEA :) . For the past week, I have been learning all about the CIM and WBEM API. Since I am working alot more then I have ever have with VMware. I am trying to automate as much as possible with out using Perl. Now please do not think I am hating on Perl, it is not that at all, it is just the fact that I love Python, thats all! That being said here is the 1st part in a 2 part series on Listing Virtual Machines using Pywbem in Python. I the 1st part I will show you how to list Virtual Machines and data related to those VMs. Example Below…

Update, here is the link for part 2 of this article.

    python listVMsInfo.py -u "http://esxhost" -a "login passwd"

    VM Name                  Linux DP1 Client     Operating System         Red Hat Enterprise Linux 5 (32-bit)    Host Name                dpclient.linuxdynasty    IP Address               192.168.101.124    DataStore Used           [Esxlinuxvol2] Linux Data Protector Install Ser/Linux Data Protector Install Ser.vmx    Requested State          Not Applicable    Operational Status       Enabled    Enabled by Default       Enabled    Enabled State            Not Applicable

Continue reading “HowTo List Virtual Machines using Python and CIM Part 1” »

© 2011 LinuxDynasty Suffusion theme by Sayontan Sinha

Warning: fopen(/home/dynasty/linuxdynasty.org/wp-content/plugins/wp-google-plus-one/lib/standard.txt) [function.fopen]: failed to open stream: No such file or directory in /home/dynasty/linuxdynasty.org/wp-content/plugins/wp-google-plus-one/plusone.php on line 104

Warning: fread(): supplied argument is not a valid stream resource in /home/dynasty/linuxdynasty.org/wp-content/plugins/wp-google-plus-one/plusone.php on line 105

Warning: fclose(): supplied argument is not a valid stream resource in /home/dynasty/linuxdynasty.org/wp-content/plugins/wp-google-plus-one/plusone.php on line 106
.