A pure Go SNMP client library supporting SNMPv1, v2c, and v3 with Get, Walk, Set, and Trap operations.
GoSNMP is an SNMP client library written entirely in Go. It allows Go applications to perform network management tasks by querying and setting SNMP variables on devices like routers, printers, and servers. The library supports SNMPv1, v2c, and v3 protocols and includes operations such as Get, Walk, Set, and Trap handling.
Go developers building network monitoring tools, infrastructure management systems, or any application that needs to interact with SNMP-enabled devices.
Developers choose GoSNMP because it provides a pure Go implementation with no external dependencies, full protocol support, and an idiomatic API that integrates seamlessly into Go projects, avoiding the need for C bindings or external binaries.
An SNMP library written in Go
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements SNMPv1, v2c, and v3 over both IPv4 and IPv6, ensuring compatibility with diverse network devices, as highlighted in the README's feature list.
Written entirely in Go with no external dependencies, offering idiomatic APIs like the LoggerInterface for easy integration into Go projects, as described in the usage section.
Provides build tags such as 'gosnmp_nodebug' to disable logging for better performance and includes password hash caching for SNMPv3, detailed in the logging and benchmark sections.
Supports all core SNMP functions including Get, Walk, Set, and Trap handling, with helper utilities like ToBigInt and Partition for efficient data processing, as listed in the overview.
The library explicitly states no plans to include a MIB parser, requiring users to rely on external tools like gosmi for OID translation, adding complexity for human-readable data.
Setting up SNMPv3 with authentication and encryption is intricate, and the library assumes user familiarity with SNMPv3 details, which can be a barrier for beginners.
Past rewrites, such as the shift from alouca/gosnmp, introduced breaking changes like removing NewGoSNMP, requiring code modifications and potentially disrupting upgrades.