# 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 `.env` file 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: ```bash 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: ```bash 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: ```bash 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.py` file. - **Increment Range**: Modify the `RANGE_MIN` and `RANGE_MAX` in the `.env` file 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 `.env` file to change the SNMP community string and OID. - **SNMP Port**: Modify the `SNMP_PORT` in the `.env` file to change the port on which `snmpd` listens. ## Notes - Ensure that the SNMP community string and port in the `.env` file 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!