SNMPD Custom OID Docker Container
This Docker container runs snmpd with a custom script that provides a specific OID. The value of this OID increases randomly by a small amount every 4 minutes. The SNMP community string, OID, increment range, and port can be configured using a .env file.
Features
- Lightweight Docker container based on Alpine Linux.
- Custom Python script to generate and update the OID value.
- Configurable SNMP daemon (
snmpd) to use the custom script. - Dynamic configuration using a
.envfile with Docker environment variables.
Requirements
- Docker installed on your system.
- Basic knowledge of Docker commands.
Dependencies
snmpd: The SNMP daemon.- Python 3: Used to write the custom script.
random: Python library for generating random numbers (included in Python's standard library).
How to Use
Step 1: Create a .env File
Create a .env file in the same directory as your Dockerfile with the following content:
SNMP_COMMUNITY=public
CUSTOM_OID=.1.3.6.1.4.1.38446.1.2.4.1.9.1
RANGE_MIN=0
RANGE_MAX=6
SNMP_PORT=161
Step 2: Build the Docker Image
Navigate to the directory containing the Dockerfile and custom_snmp_script.py, then run:
docker build -t snmpd-custom .
Step 3: Run the Docker Container
Start the Docker container with the following command, using the --env-file option to pass the environment variables:
docker run -d -p ${SNMP_PORT}:${SNMP_PORT}/udp --name snmpd-custom-container --env-file .env snmpd-custom
Replace ${SNMP_PORT} with the actual port number you want to use, or use the value from your .env file.
Step 4: Verify the Setup
You can verify that the container is running and the SNMP daemon is providing the custom OID by using an SNMP client to query the OID:
snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.38446.1.2.4.1.9.1
You should see the value incrementing randomly every 4 minutes.
Customization
- Initial Value: You can change the initial value in the
custom_snmp_script.pyfile. - Increment Range: Modify the
RANGE_MINandRANGE_MAXin the.envfile to change how much the value increments. - Update Interval: Adjust the sleep interval in the script to change the frequency of updates.
- Community String and OID: Modify the
.envfile to change the SNMP community string and OID. - SNMP Port: Modify the
SNMP_PORTin the.envfile to change the port on whichsnmpdlistens.
Notes
- Ensure that the SNMP community string and port in the
.envfile match your configuration. - The container exposes the specified SNMP port for communication.
License
This project is licensed under the MIT License.
Feel free to contribute or modify the setup to fit your specific needs!