SnmpKit.SnmpMgr.Bulk (snmpkit v0.6.6)
Advanced SNMP bulk operations using SNMPv2c GETBULK.
This module provides efficient bulk operations that are significantly faster than iterative GETNEXT requests for retrieving large amounts of data.
Summary
Functions
Performs a single GETBULK request.
Performs multiple concurrent GETBULK operations.
Optimized table retrieval using GETBULK.
Bulk walk operation using GETBULK instead of iterative GETNEXT.
Functions
Performs a single GETBULK request.
Parameters
target
- The target deviceoids
- Single OID or list of OIDs to retrieveopts
- Options including :max_repetitions, :non_repeaters
Examples
iex> SnmpKit.SnmpMgr.Bulk.get_bulk("192.168.1.1", "ifTable", max_repetitions: 20)
{:ok, [
{[1,3,6,1,2,1,2,2,1,2,1], :octet_string, "eth0"},
{[1,3,6,1,2,1,2,2,1,2,2], :octet_string, "eth1"},
# ... up to 20 entries with type information
]}
Performs multiple concurrent GETBULK operations.
Parameters
targets_and_oids
- List of {target, oid} tuplesopts
- Options for all requests
Examples
iex> requests = [
...> {"device1", "sysDescr.0"},
...> {"device2", "sysUpTime.0"},
...> {"device3", "ifNumber.0"}
...> ]
iex> SnmpKit.SnmpMgr.Bulk.get_bulk_multi(requests)
[
{:ok, [{"1.3.6.1.2.1.1.1.0", "Device 1"}]},
{:ok, [{"1.3.6.1.2.1.1.3.0", 123456}]},
{:error, :timeout}
]
Optimized table retrieval using GETBULK.
Uses GETBULK to efficiently retrieve an entire SNMP table, automatically handling pagination when tables are larger than max_repetitions.
Parameters
target
- The target devicetable_oid
- The table OID to retrieveopts
- Options including :max_repetitions, :max_entries
Examples
iex> SnmpKit.SnmpMgr.Bulk.get_table_bulk("switch.local", "ifTable")
{:ok, [
{"1.3.6.1.2.1.2.2.1.2.1", "eth0"},
{"1.3.6.1.2.1.2.2.1.3.1", 6},
{"1.3.6.1.2.1.2.2.1.2.2", "eth1"},
{"1.3.6.1.2.1.2.2.1.3.2", 6}
]}
Bulk walk operation using GETBULK instead of iterative GETNEXT.
Significantly more efficient than traditional walks for large subtrees.
Parameters
target
- The target deviceroot_oid
- Starting OID for the walkopts
- Options including :max_repetitions, :max_entries
Examples
iex> SnmpKit.SnmpMgr.Bulk.walk_bulk("device.local", "system")
{:ok, [
{"1.3.6.1.2.1.1.1.0", "System Description"},
{"1.3.6.1.2.1.1.2.0", "1.3.6.1.4.1.9"},
{"1.3.6.1.2.1.1.3.0", 12345}
]}