SNMP Command Responder¶
The SNMP Command Responder tool is a general purpose, cross-platform, extendable and multi-protocol SNMP agent implementation.
SNMPv1/v2c/v3 operations with built-in protocol and transport translation capabilities
SNMPv3 USM supports MD5/SHA/SHA224/SHA256/SHA384/SHA512 auth and DES/3DES/AES128/AES192/AES256 privacy crypto algorithms
Supports all SNMP commands
Maintains multiple independent SNMP engines, network transports and MIB trees
Offers versatile SNMP PDU routing towards a MIB tree implementation
Supports asynchronous MIB objects API
Extension modules supporting SNMP PDU filtering and on-the-fly modification
Works on Linux, Windows and OS X
As of January 2019, the SNMP Command Responder tool is being in active development. Some configuration options and APIs can change, some features may not work as intended.
The SNMP Command Responder tool is a daemon implementing one or more SNMP Command Responders (which is the main part of the SNMP agent).
The main goal of SNMP is to expose interesting traits of a system being managed through SNMP in terms of the SNMP/SMI data model. The SNMP responder package leverages PySMI project’s ability to build the boilerplate Python code from ASN.1 MIB files. The generated code should then be adapted by the user by linking the MIB objects to the actual system objects or data sources to expose or manage through SNMP. The SNMP responder tool will consume these Pythonized MIBs serving the objects defined there to the SNMP clients (managers) on the network.
The SNMP Command Responder daemon can maintain one or more independent MIB trees hooking up one or more MIB modules onto each tree. Aside from the MIB trees, SNMP Command Responder can maintain one or more independent SNMP agents each listening at one or more network endpoints.
The SNMP messages reaching any of the configured SNMP agents could then be routed to any of the running MIB trees based on virtually any SNMP message property. For instance, the criterion could be a source address of the incoming SNMP message or SNMP credentials (e.g. SNMP community name, SNMPv3 user name, SNMP protocol version etc) or a specific OID present in the message.
Besides SNMP message routing, SNMP Command Responder can modify SNMP PDU messages before applying them on the MIB tree or on the response message on its way back to SNMP manager. The logic behind SNMP message modification can be expressed in the form of isolated Python snippets of Python code called plugins. Users can implement their own plugins and configure SNMP Responder to call them.
The system is driven by command-line options and configuration files. Depending on the desired system’s configuration, the complexity of configuration files can vary. We maintain a collection of use-cases and example configurations implementing them.
Ultimately, SNMP Command Responder works with its data backend to fetch or commit the data SNMP managers instruct it to. The user is expected to interface one or more SNMP MIB modules with the actual data sources they intend these MIB objects to work with.
The easiest way to download and install SNMP Responder is via Python pip tool:
# pip install snmpresponder-lextudio
Alternatively, you can download the Python package from GitHub repo and install is manually.
The tool requires Python 3.7+.
Detailed list of new features and fixes could be read in the changelog.