|
NAMESNMP::Simple - shortcuts for when using SNMP SYNOPSIS 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',
);
DESCRIPTIONThis 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',
);
SNMP Beginners, read me first!Please, please, please do not use this module as a starting point for working with SNMP and Perl. Look elsewhere for starting resources:
SNMP Advanced and Intermediate users, read me first!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. METHODSnew( @args )Creates a new SNMP::Simple object. Arguments given are passed directly to "SNMP::Session->new". See "SNMP::Session" in SNMP for details. Example: use SNMP::Simple
my $s = SNMP::Simple->new(
DestHost => 'host.example.com',
Community => 'public',
Version => 1,
) or die "couldn't create session";
...
get( $oid )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, $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. get_list( $oid )Returns leaves of the given OID. If called in array context, returns an array. If called in scalar context, returns an array reference. get_table( @oids )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. get_named_table( %oids_by_alias )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' ) Would return something like the following: {
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. EXAMPLESA sample script examples/printerstats.pl is included with this distribution. SEE ALSOSNMP AUTHORIan Langworth, "<ian@cpan.org>" BUGS
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. COPYRIGHT & LICENSECopyright 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.
|