SNMP::Simple - shortcuts for when using SNMP
use SNMP::Simple; $name = $s->get('sysName'); # same as sysName.0 $location = $s->get('sysLocation'); @array = $s->get_list('hrPrinterStatus'); $arrayref = $s->get_list('hrPrinterStatus'); @list_of_lists = $s->get_table( qw( prtConsoleOnTime prtConsoleColor prtConsoleDescription ) ); @list_of_hashes = $s->get_named_table( name => 'prtInputDescription', media => 'prtInputMediaName', status => 'prtInputStatus', level => 'prtInputCurrentLevel', max => 'prtInputMaxCapacity', );
This module provides shortcuts when performing repetitive information-retrieval tasks with SNMP.
Instead of this:
use SNMP; $vars = new SNMP::VarList( ['prtConsoleOnTime'], ['prtConsoleColor'], ['prtConsoleDescription'], ); my ( $light_status, $light_color, $light_desc ) = $s->getnext($vars); die $s->{ErrorStr} if $s->{ErrorStr}; while ( !$s->{ErrorStr} and $$vars[0]->tag eq "prtConsoleOnTime" ) { push @{ $data{lights} }, { status => ( $light_status ? 0 : 1 ), color => SNMP::mapEnum( $$vars[1]->tag, $light_color ), description => $light_desc, }; ( $light_status, $light_color, $light_desc ) = $s->getnext($vars); }
...you can do this:
use SNMP::Simple; $data{lights} = $s->get_named_table( status => 'prtConsoleOnTime', color => 'prtConsoleColor', name => 'prtConsoleDescription', );
Please, please, please do not use this module as a starting point for working with SNMP and Perl. Look elsewhere for starting resources:
The SNMP module
The Net-SNMP web site (http://www.net-snmp.org/) and tutorial (http://www.net-snmp.org/tutorial-5/)
Appendix E of Perl for System Administration (http://www.amazon.com/exec/obidos/tg/detail/-/1565926099) by David N. Blank-Edelman
I'll admit this is a complete slaughtering of SNMP, but my goals were precise. If you think SNMP::Simple could be refined in any way, feel free to send me suggestions/fixes/patches.
Creates a new SNMP::Simple object. Arguments given are passed directly to SNMP::Session->new. See "SNMP::Session" in SNMP for details.
SNMP::Session->new
Example:
use SNMP::Simple my $s = SNMP::Simple->new( DestHost => 'host.example.com', Community => 'public', Version => 1, ) or die "couldn't create session"; ...
Gets the named variable and returns its value. If no value is returned, get() will try to retrieve a list named $name and return its first vlaue. Thus, for convenience,
get()
$name
$s->get('sysDescr')
..should be the same as:
$s->get('sysDescr.0')
Numbered OIDs are fine, too, with or without a leading dot:
$s->get('1.3.6.1.2.1.1.1.0')
SNMP::mapEnum() is automatically used on the result.
SNMP::mapEnum()
Returns leaves of the given OID.
If called in array context, returns an array. If called in scalar context, returns an array reference.
Given a list of OIDs, this will return a list of lists of all of the values of the table.
For example, to get a list of all known network interfaces on a machine and their status:
$s->get_table('ifDescr', 'ifOperStatus')
Would return something like the following:
[ 'lo', 'up' ], [ 'eth0', 'down' ], [ 'eth1', 'up' ], [ 'sit0', 'down' ]
If called in array context, returns an array (of arrays). If called in scalar context, returns an array reference.
Like "get_table", but lets you rename ugly OID names on the fly. To get a list of all known network interfaces on a machine and their status:
$s->get_table( name => 'ifDescr', status => 'ifOperStatus' )
{ status => 'up', name => 'lo' }, { status => 'down', name => 'eth0' }, { status => 'up', name => 'eth1' }, { status => 'down', name => 'sit0' }
If called in array context, returns an array (of hashes). If called in scalar context, returns an array reference.
A sample script examples/printerstats.pl is included with this distribution.
SNMP
Ian Langworth, <ian@cpan.org>
<ian@cpan.org>
There are no real tests.
I haven't tested this with v3.
Please report any bugs or feature requests to bug-snmp-simple@rt.cpan.org, or through the web interface at http://rt.cpan.org. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
bug-snmp-simple@rt.cpan.org
Copyright 2005 Ian Langworth, All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install SNMP::Simple, copy and paste the appropriate command in to your terminal.
cpanm
cpanm SNMP::Simple
CPAN shell
perl -MCPAN -e shell install SNMP::Simple
For more information on module installation, please visit the detailed CPAN module installation guide.