SnmpKit.SnmpMgr.Format (snmpkit v0.6.3)
SNMP data formatting and presentation utilities.
This module provides user-friendly formatting functions for SNMP data types, delegating to the underlying SnmpKit.SnmpLib.Types functions while maintaining a clean SnmpMgr API surface.
All functions work with the 3-tuple format {oid_string, type, value}
that
SnmpMgr uses throughout the library.
Examples
# Format uptime from SNMP result
{:ok, {_oid, :timeticks, ticks}} = SnmpKit.SnmpMgr.get("router.local", "sysUpTime.0")
SnmpKit.SnmpMgr.Format.uptime(ticks)
# => "5 days, 12 hours, 34 minutes, 56 seconds"
# Format IP address
SnmpKit.SnmpMgr.Format.ip_address(<<192, 168, 1, 1>>)
# => "192.168.1.1"
# Pretty print any SNMP result
{:ok, result} = SnmpKit.SnmpMgr.get("router.local", "sysDescr.0")
SnmpKit.SnmpMgr.Format.pretty_print(result)
# => {"1.3.6.1.2.1.1.1.0", :octet_string, "Cisco IOS Router"}
Summary
Functions
Formats byte counts into human-readable sizes.
Automatically formats a value based on its SNMP type.
Formats SNMP interface status values into readable strings.
Formats SNMP interface types into readable strings.
Formats IP address bytes into dotted decimal notation.
Formats MAC addresses into standard colon-separated hex format.
Pretty prints an SNMP result with type-aware formatting.
Pretty prints a list of SNMP results.
Formats network speeds (bits per second) into human-readable rates.
Formats timeticks (hundredths of seconds) into human-readable uptime.
Functions
Formats byte counts into human-readable sizes.
Examples
iex> SnmpKit.SnmpMgr.Format.bytes(1024)
"1.0 KB"
iex> SnmpKit.SnmpMgr.Format.bytes(1073741824)
"1.0 GB"
Automatically formats a value based on its SNMP type.
This function provides a single entry point for type-aware formatting, automatically choosing the appropriate formatting function based on the type.
Examples
iex> SnmpKit.SnmpMgr.Format.format_by_type(:timeticks, 126691300)
"14 days 15 hours 55 minutes 13 seconds"
iex> SnmpKit.SnmpMgr.Format.format_by_type(:gauge32, 1000000000)
"1 GB"
iex> SnmpKit.SnmpMgr.Format.format_by_type(:octet_string, "Hello")
"Hello"
Formats SNMP interface status values into readable strings.
Examples
iex> SnmpKit.SnmpMgr.Format.interface_status(1)
"up"
iex> SnmpKit.SnmpMgr.Format.interface_status(2)
"down"
Formats SNMP interface types into readable strings.
Examples
iex> SnmpKit.SnmpMgr.Format.interface_type(6)
"ethernetCsmacd"
iex> SnmpKit.SnmpMgr.Format.interface_type(24)
"softwareLoopback"
Formats IP address bytes into dotted decimal notation.
Examples
iex> SnmpKit.SnmpMgr.Format.ip_address(<<192, 168, 1, 1>>)
"192.168.1.1"
iex> SnmpKit.SnmpMgr.Format.ip_address({10, 0, 0, 1})
"10.0.0.1"
Formats MAC addresses into standard colon-separated hex format.
Handles both binary and list representations of MAC addresses commonly found in SNMP responses.
Examples
iex> SnmpKit.SnmpMgr.Format.mac_address(<<0x00, 0x1B, 0x21, 0x3C, 0x4D, 0x5E>>)
"00:1b:21:3c:4d:5e"
iex> SnmpKit.SnmpMgr.Format.mac_address([0, 27, 33, 60, 77, 94])
"00:1b:21:3c:4d:5e"
iex> SnmpKit.SnmpMgr.Format.mac_address("\x00\x1B\x21\x3C\x4D\x5E")
"00:1b:21:3c:4d:5e"
Pretty prints an SNMP result with type-aware formatting.
Takes a 3-tuple {oid_string, type, value}
and returns a formatted version
with human-readable values based on the SNMP type.
Examples
iex> SnmpKit.SnmpMgr.Format.pretty_print({"1.3.6.1.2.1.1.3.0", :timeticks, 12345678})
{"1.3.6.1.2.1.1.3.0", :timeticks, "1 day, 10 hours, 17 minutes, 36 seconds"}
iex> SnmpKit.SnmpMgr.Format.pretty_print({"1.3.6.1.2.1.4.20.1.1.192.168.1.1", :ip_address, <<192, 168, 1, 1>>})
{"1.3.6.1.2.1.4.20.1.1.192.168.1.1", :ip_address, "192.168.1.1"}
Pretty prints a list of SNMP results.
Examples
iex> results = [
...> {"1.3.6.1.2.1.1.3.0", :timeticks, 12345678},
...> {"1.3.6.1.2.1.1.1.0", :octet_string, "Router"}
...> ]
iex> SnmpKit.SnmpMgr.Format.pretty_print_all(results)
[
{"1.3.6.1.2.1.1.3.0", :timeticks, "1 day, 10 hours, 17 minutes, 36 seconds"},
{"1.3.6.1.2.1.1.1.0", :octet_string, ""Router""}
]
Formats network speeds (bits per second) into human-readable rates.
Examples
iex> SnmpKit.SnmpMgr.Format.speed(100_000_000)
"100.0 Mbps"
iex> SnmpKit.SnmpMgr.Format.speed(1_000_000_000)
"1.0 Gbps"
Formats timeticks (hundredths of seconds) into human-readable uptime.
Examples
iex> SnmpKit.SnmpMgr.Format.uptime(12345678)
"1 day, 10 hours, 17 minutes, 36 seconds"
iex> SnmpKit.SnmpMgr.Format.uptime(4200)
"42 seconds"