Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Perl SNMP Error Handling

by skunix (Novice)
on Jul 11, 2013 at 18:02 UTC ( #1043802=perlquestion: print w/ replies, xml ) Need Help??
skunix has asked for the wisdom of the Perl Monks concerning the following question:

I am polling SNMP data from a list of devices using the SNMP module based off of the Net-SNMP library.

Everything works fine when I make a new SNMP::Session with an IP address that is reachable however if the IP is unreachable the program crashes when I try to get the SNMP data like so...

my $vars = new SNMP::VarList(['sysDescr',0]['sysUpTime',0]); my ($descr,$uptime) = $snmp->get($vars);

Which will crash with the follow error...

Can't call method "get" on an undefined value at...

Is there a way to handle this error without crashing?

Comment on Perl SNMP Error Handling
Select or Download Code
Re: Perl SNMP Error Handling
by choroba (Abbot) on Jul 11, 2013 at 19:01 UTC
    You can use eval or Try::Tiny.
    my ($descr, $uptime); if (eval { ($descr, $uptime) = $snmp->get($vars); 1 }) { ... } else { warn $@; }
    لսႽ ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ
Re: Perl SNMP Error Handling
by hippo (Deacon) on Jul 11, 2013 at 19:08 UTC

    Of course. Simply test the defined nature of your object before trying to call the method.

    if (defined $snmp) { ($descr,$uptime) = $snmp->get($vars); } else { die 'Horrors! My $snmp object is undefined!'; }

    ... or similar.

      Man... I feel like an idiot -_-

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1043802]
Approved by Perlbotics
Front-paged by toolic
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (11)
As of 2014-07-14 07:43 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    When choosing user names for websites, I prefer to use:








    Results (256 votes), past polls