Re: managing Devices that don't allow SNMP Queries

Fredrik Björk <[email protected]>
Newsgroups gmane.network.net-snmp.user
Message-ID <[email protected]>
Now, that's an interesting issue, just my thing! Assuming you have a way 
of gatering data (as you indicate) using a script, you can make that 
data snmp readable using snmpd and the "pass" or "pass_persist" feature.

What you need to do:

1 - Edit /etc/snmp/snmpd.conf and add the following line:

pass .1.3.6.1.3.x /path/script.php

Adjust the x and the script/program to suit your needs. the x can be any 
number, since .1.3.6.1.3 is the SNMP experimental tree free for you to 
use much like RFC 1918 IP addresses (10.0.0.0/8, 172.16.0.0/12 and 
192.168.0.0/16). I used my phone number as x in a project:)

While you're there, set up an SNMP community that can be used to read 
your new private tree:

rocommunity public 0.0.0.0/0
(more lines may be needed depending on config and version)

2 - Write a program/script to serve OID values. The script should take 
two arguments. The first is query type and the second the requested OID.

Query type is -g for get and -n for get next so basically the script 
could be run manually like this:

# script.php -g .1.3.6.1.3.12345.1.0
.1.3.6.1.3.12345.1.0
integer
0

So, the output NEEDS to be:
OID (with leading dot...)
type
value

Not that hard to accomplish as long as your data can be processed by the 
script. I have used a MySQL database to store the data gathered and then 
used that dB to read values using the PHP script.


If you need read performance exceeding more than a few snmpreads per 
second you need to consider the "pass_persist" feature. We can do 8 
reads per second with the "pass" script, and spawning the new process 
for each read is probably what takes so much time. I originally 
implemented it for a low-rate reading application, but then "they" kept 
increasing the demands on read performance... Surely there are lots of 
examples out there with pass_persist.


How will you be reading data from your device? Telnet/SSH/HTTP/...? 
"expect" is a function we all "love to hate" with its TCL syntax, but 
very usable for automatically telnetting/SSHing into a switch or 
whatever and do things automagically. After getting the data, putting it 
in a database or file in a structured way readable by the "pass" script 
is the next task for you, but then, you're done! I even monitor a Dell 
server using the "ipmitool" program from Dell that is supposed to be 
interactive, but "expect" does the interactivity for me once evey minute...


pass_persist:
http://www.net-snmp.org/wiki/index.php/Tut:Extending_snmpd_using_shell_scripts

Expect:
http://www2.tcl.tk/11583

/Fredrik


Craig Taylor skrev 2014-04-03 17:30:
>
> I want to proactively monitor a small storage system with Net SNMP, 
> but the storage doesn't allow querying with snmpget commands.  Can I 
> create an external script to get the string another way and pass that 
> string onto the tool like it came from an snmpget command?
>
> If yes, any help on how to do this would be appreciated.
>
> Thanks,
>
> Craig D. Taylor
> m: 630.485.9975
> e:  [email protected]
>
>
> ------------------------------------------------------------------------------
>
>
> _______________________________________________
> Net-snmp-users mailing list
> [email protected]
> Please see the following page to unsubscribe or change other options:
> https://lists.sourceforge.net/lists/listinfo/net-snmp-users

------------------------------------------------------------------------------

_______________________________________________
Net-snmp-users mailing list
[email protected]
Please see the following page to unsubscribe or change other options:
https://lists.sourceforge.net/lists/listinfo/net-snmp-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.