Hi Chris,

Thanks for guiding about the right style of perl coding & also for
resolving snmp session problem.
My system's snmpd was not enabled & SNMP5.0 was installed which was
giving the error as "Unknown Error Creating session" 
I installed SNMP3.6 , started snmpd, httpd in my Linux system & now
there is no problem in creating an snmp session.
But I want to write this as a package/interface file .
Please could U guide/direct me to  writing a simple/sample perl package
(sample.pm) & then testing it.
I got to know some of the aspects relating to bless(which are used to
make variables similar to java class variables).
If in a package file SNMP.pm, I need to define functions like 
snmpcreatesession,
snmpget,
 snmpgetnext .....
Can I write a perl package file following to OOP concepts ,i.e create an
instance of the SNMP 
$snmpInstance = new SNMP(arguments)
SNMPgetResult = $snmpInstance->snmpget(arguments)

Please do guide
Thanks,
Geetha

On Tue, 2004-09-07 at 19:50, Chris Devers wrote:

> On Tue, 7 Sep 2004, Geetha B wrote:
> 
> >  ($session, $error) = Net::SNMP->session(
> >     -hostname  => shift || 'localhost',
> >     -community => shift || 'public',
> >     -port      => shift || 161
> >  );
> 
> It may be a dead end, but it may help to define these items as temp 
> variables, and then throw in a print statement that confirms that you're 
> actually using the values you meant to use.
> 
> This is, admittedly, grasping, but it's worth a shot.
> 
> My favorite debugging technique is to throw in lots of print statements 
> to show what data is being used at key sections of the program, as in 
> most cases this can help pin down where things are going wrong. This 
> seems like an example where doing that may help.
> 
> If nothing else, can you hard-code the values that you're `shift`ing so 
> that you know this should work ? If the script fails when you're sure 
> you're using the right data, the problem may be in the module itself.
> 
> Also, why are you coding your test handler like this?
> 
>      if (!defined($session)) {
>          printf("ERROR: %s.\n", $error);
>          exit 1;
>      }
> 
> Why a printf? Why `exit` instead of `die`? This seems more idiomatic:
> 
>      defined($session) or die "ERROR: $error\n$!\n";
> 
> Wouldn't something like the above line work ?
> 
> Anyway, I tried your script as a one-liner on a Debian machine with 
> their version of Net::SNMP installed, and it seems like everything works 
> fine:
> 
>      $ perl -MNet::SNMP -e '($session, $error) = Net::SNMP->session( -hostname => 
> "localhost", -community => "public", -port => 161); defined($session) or die "ERROR: 
> $error\n$!\n";'
>      $
> 
> This suggests that the module is probably working, and the line 
> that calls the session(...) may not be getting the needed data...


Reply via email to