NAME
SNMP::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'
,
);
DESCRIPTION
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'
,
);
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:
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
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.
METHODS
new( @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.
EXAMPLES
A sample script examples/printerstats.pl is included with this distribution.
SEE ALSO
AUTHOR
Ian Langworth, <ian@cpan.org>
BUGS
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.
COPYRIGHT & LICENSE
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.