#************************************************************** #************************************************************** # Copyright 2002 - The Regents of the University of California # All Rights Reserved # Permission to use, copy, modify and distribute any part of this # script for educational, research and non-profit purposes, without # fee, and without a written agreement is hereby granted, provided # that the above copyright notice, this paragraph and the following # three paragraphs appear in all copies. # Those desiring to incorporate this script into commercial products # or use for commercial purposes should contact the Technology # Transfer & Intellectual Property Services, University of California, # San Diego, 9500 Gilman Drive, Mail Code 0910, La Jolla, CA # 92093-0910, Ph: (858) 534-5815, FAX: (858) 534-7345, # E-MAIL:invent@ucsd.edu. # IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY # PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL # DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS # SCRIPT, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # THE SCRIPT IS PROVIDED HEREIN IS ON AN "AS IS" BASIS, AND THE # UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. THE UNIVERSITY OF # CALIFORNIA MAKES NO REPRESENTATIONS AND EXTENDS NO WARRANTIES OF ANY # KIND, EITHER IMPLIED OR EXPRESS, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR # PURPOSE, OR THAT THE USE OF THE SCRIPT WILL NOT INFRINGE ANY PATENT, # TRADEMARK OR OTHER RIGHTS. # ************************************************************* # ************************************************************* #!/usr/bin/perl -s # This script parses through SNMP output and outputs the value of the # variable along with its timestamp. For e.g., to get the number of # inbound unicast packets on interface 3 (wireless) of the access # point: # use: perl extractnew.pl .ifInUcastPkts.3 < input_file # # # use: extract [pattern] < file # look for variables matching "pattern" $pattern = $ARGV[0]; print STDERR "Looking for '$pattern'...\n"; do { # find the timestamp while () { next unless (/([\d]+\:[\d]+\:[\d]+.[\d]+)/) ; $timestamp = $1; last; } # look for entries matching pattern in rest of MIB capture while () { # break out of loop if we're at the end of a capture last if (/End of MIB subtree/); # look for a pattern match on a "Variable" line next unless (/Variable\s+=\s+(.*$pattern[^\s]*)/); $var = $1; # read the next line and extract the value and type $_ = ; unless (/Value\s+=\s+([^\s]+)\s+([^\s]+)$/) { print "!!! Entry matched pattern, but could not extract value.\n"; next; } $type = $1; $value = $2; print "$timestamp\t$value\n"; } } while (!eof(STDIN));