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.