Using SNMP to Extract Inventory Information from a List of Routers

Problem

You want to build a report of important router information for all of your managed routers.

Solution

The following Perl script extracts important router information—such as router name, physical location, contact name, and serial number from a list of routers—and creates a report of this information. The script is intended to be run manually, and no arguments are required or expected.

Here’s some example output:

Freebsd% ./inventory.pl
  Router             Location                     Contact              Serial
Router     999 Queen St. W., Toronto, Ont  Ian Brown 416-555-2943     JAX123456 
Boston     1273 Main Street, Boston, MA    Bob Irwin 800-555-1221     JAX231567    
Denver     24 Sussex Drive, Denver, CO     Helpdesk  800-555-2992     JAX928362    
Frame      999 Queen St. W., Toronto, Ont  Ian Brown 416-555-2943     JAX212321      
Toronto    999 Queen St. W., Toronto, Ont  Ian Brown 416-555-2943     JAX283291 
Boston2    1273 Main Street, Boston, MA    Bob Irwin 800-555-1221     JAX292228   
Denver2    24 Sussex Drive, Denver, CO     Helpdesk  800-555-2992     JAX219115   
Freebsd%

The Perl code follows in Example 17-1.

Example 17-1. inventory.pl

#!/usr/bin/perl # # inventory.pl -- a script to extract valuable information # from a Router. (Name, Location, Contact, S/N) # # # Set behavior $workingdir="/home/nms"; $snmpro="ORARO"; $rtrlist="$workingdir/RTR_LIST"; # # open (RTR, "$rtrlist") || die "Can't open $rtrlist file"; open (LOG, ">$workingdir/RESULT") || die "Can't open $workingdir/RESULT file"; printf " Router\t\t Location\t\t\tContact\t\t ...

Get Cisco IOS Cookbook, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.