This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

LogicMachine as SNMP probe. Access to MIB info stored in Logicmachine
#5
It's working!!One more question: with this example it allow querys from one single IP. Is there a setting that allows querys from any ip inthe LAN?This is already OK to me! but I would like to know!Thank you again!!

(23.03.2022, 10:09)admin Wrote: Sending traps is not implemented at the moment. SNMP agent (experimental) can be executed via a script. It allows mapping objects to OIDs.

1. Install the latest package via system config:
https://dl.openrb.com/pkg/libnetsnmp_5.8-1_imx6.ipk
https://dl.openrb.com/lm-21-imx6/pkg/lua...5_imx6.ipk

2. Create a resident script with sleep time set to 5. Edit conf variable as needed. In this example remote host is 192.168.1.230, base OID is .1.3.6.1.4.1.53864.1.1
Note that disabling the script does not stop the snmp daemon.

Code:
123456789101112131415
local conf = [[ rocommunity public 192.168.1.230 rwcommunity private 192.168.1.230 pass .1.3.6.1.4.1.53864.1.1 /usr/bin/lua /tmp/snmp.lua ]] local script = [[ require('user.snmphandler') ]] io.writefile('/tmp/snmpd.conf', conf) io.writefile('/tmp/snmp.lua', script) os.execute('killall snmpd; snmpd -c /tmp/snmpd.conf -f')

3. Create user library named "snmphandler". Edit the oids table and supply required oids and group address pairs. Base OID must match the configured OID in the snmpd conf. Make sure that all mapped group addresses exist.

Code:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
local oids = {   { oid = '.1.3.6.1.4.1.53864.1.1.1.0', addr = '1/1/1' },   { oid = '.1.3.6.1.4.1.53864.1.1.2.1.2.1', addr = '1/1/2' },   { oid = '.1.3.6.1.4.1.53864.1.1.2.1.3.1', addr = '1/1/4' },   { oid = '.1.3.6.1.4.1.53864.1.1.3.0', addr = '1/1/5' },   { oid = '.1.3.6.1.4.1.53864.1.1.4.0', addr = '1/1/6' },   { oid = '.1.3.6.1.4.1.53864.1.1.5.0', addr = '1/1/7' },   { oid = '.1.3.6.1.4.1.53864.1.1.6.0', addr = '1/1/8' }, } require('genohm-scada') db = require('dbenv').new() local req, oid = assert(arg[ 1 ]), assert(arg[ 2 ]) local function get(item)   if not item then     return   end   local obj = grp.find(item.addr)   if not obj then     return   end   local value = obj.value   local objtype = 'integer'   if type(value) == 'boolean' then     value = value and 1 or 0   elseif type(value) == 'number' then     value = math.round(value)   elseif type(value) ~= 'string' then     value = require('json').encode(value)   end   print(item.oid)   print(type(value) == 'number' and 'integer' or 'string')   print(value) end -- get if req == '-g' then   for i, item in ipairs(oids) do     if item.oid == oid then       get(item)       break     end   end -- next elseif req == '-n' then   for i, item in ipairs(oids) do     if item.oid == oid then       get(oids[ i + 1 ])       break     elseif item.oid:find(oid, 1, true) == 1 then       get(item)       break     end   end -- set elseif req == '-s' then   local objtype, value = assert(arg[ 3 ]), assert(arg[ 4 ])   if objtype ~= 'string' then     value = tonumber(value)   end   for i, item in ipairs(oids) do     if item.oid == oid then       grp.write(item.addr, value)     end   end end

Attached Files Thumbnail(s)
   
Reply


Messages In This Thread
RE: LogicMachine as SNMP probe. Access to MIB info stored in Logicmachine - by kike - 23.03.2022, 12:52

Forum Jump: