[SNMP4J] Designing an application to "learn" an SNMP enabled device.

David Cooper david.cooper at rfinnovations.com.au
Tue Apr 5 12:05:03 CEST 2011


Greetings from Australia!

 

I'm a Software Engineer designing a prototype application for my work which
can hopefully do the following:

-          A user can input an IP of any SNMP enabled device on a local
network

-          The application then effectively "learns" about the device by
walking its MIB (i.e. it queries the device for all of its SNMP data)

-          The application displays the MIB in a tree format and groups
certain OID's together in a table format (i.e. it might show the MIB-2
System [1.3.6.1.2.1.1] sub-tree [I'm not too sure on the terminology of
that] in one table for categorizations sake, rather than have everything all
displayed on the screen at once)

-          The user can then perform GETs and SETs on the appropriate
objects

 

The reason I use the term "learns" is because it would be ideal for this
application to work with any device that is SNMP enabled, rather than taking
the approach of "we will only be querying devices that use <insert MIB
here>".

 

I am relatively new to SNMP development (have been learning about SNMP and
fooling around with the SNMP4J library since about January this year) and
have been reading a couple of books on SNMP (Larry Walsh's  SNMP MIB
Handbook and O'Reilly's Essential SNMP). In addition to this, I have
searched the email archives and Google for people that are either A) trying
to develop or have already developed a similar application, or B)
encountering similar problems to those I am either expecting to encounter or
have already encountered. Unfortunately this has not really turned up
anything that I find adequate.

 

I suppose the first question I have is whether or not this is actually
possible? It seems like this might not really be what SNMP was intended to
be used for (but I am determined to find this out for certain).

 

Following on from this (given that it is possible), what would the best
approach be to tackle such a problem? So far I have not determined a way to
be able to query a device and effectively ask it what MIB it is using, I
have either had to hard code a WALK from node .1 (this takes absolutely
forever and I imagine this is definitely not ideal!) or I have had to
perform a walk from the root note of the MIB that I know the device I am
testing actually has. The latter goes against the design of the application
- that this application should be able to learn a device regardless of what
MIB it is using.

 

The next question I have is a bit more specific to SNMP4J. I found this
email http://lists.agentpp.org/pipermail/snmp4j/2007-July/002308.html and it
raised the good question of whether I would need to be translating the OID's
into its object name at runtime or compile time. My guess is that I would
need to do this at runtime, being as I will be dealing with arbitrary
devices. In this case, am I correct in assuming that JASMI will be the right
tool for the job (because having only OID's will not provide enough
information to the user as to what data is being retrieved of course)?

 

Thanks for taking the time to read this email, if you require any more
information I will respond as soon as possible. I apologise if my
terminology/overall understanding of SNMP/SNMP4J is not as vast as it should
be.

 

Regards,

David Cooper

 




More information about the SNMP4J mailing list