Skip to main content

An opinionated python SNMPv2 library built for rapid database ingestion.

Project description

Version badge PyPI - Python Version PyPI - Format Build badge Coverage badge

An opinionated python3.7 SNMPv2 library designed for rapid database ingestion.


Snmp-fetch is built for python 3.7 and c++17. Building is currently only tested on gcc 8 and each release is only tested against the latest version of each prerequisite dependency. The following prerequisites must be installed before adding snmp-fetch to your project.


A recent version of net-snmp is required; testing has only been performed against net-snmp 5.8.

# perl bindings may be needed on RPM based systems
sudo yum install perl-devel

# compile and install net-snmp
wget -O net-snmp.tar.gz
tar xzfv net-snmp.tar.gz
cd net-snmp-5.8
./configure --enable-ipv6 --with-defaults
sudo make install
cd .. && rm -rf net-snmp*
sudo ldconfig -v

boost (headers only)

Boost is a popular C++ library to reduce boilerplate. Snmp-fetch makes use of some of the header only libraries.

tar xzfv boost_1_71_0.tar.gz
sudo mv boost_1_71_0/boost /usr/local/include/
rm -rf boost_1_71_0*


Pybind11 is a C++ wrapper around the Python C API to reduce boilerplate. This is a header only library, but the test script will attempt to build a binary.

# install pytest in the user space for the test build
pip3.7 install --user pytest

# install cmake
chmod a+x
sudo ./ \
  --prefix=/usr/local/ \
  --exclude-subdir \

# test and install pybind11
wget -O pybind11.tar.gz
tar -xvf pybind11.tar.gz
cd pybind11-2.4.3
mkdir -p build && cd build
make check -j 4
sudo make install
cd ../../
rm -rf pybind11*


# poetry
poetry add snmp-fetch --no-dev
# pip
pip install snmp-fetch


Poetry is required for the development of snmp-fetch.

# add the testing framework
wget -P tests/capi

# clone the repository
git clone
cd snmp-fetch

# setup the virtual environment - mypy uses symbolic links in the 'stubs' directory to
# expose packages that play nicely with the static type checker
virtualenv -p python3.7 ENV
source ENV/bin/activate
poetry install

# python linting
poetry run isort -rc --atomic .
poetry run pylint snmp_fetch tests
poetry run flake8 snmp_fetch tests
poetry run mypy -p snmp_fetch -p tests
poetry run bandit -r snmp_fetch

# C++ linting

# python testing
poetry run pytest -v --hypothesis-show-statistics tests
# fail fast testing
poetry run pytest -x --ff tests

# C++ testing (GCC)
g++ -std=c++17 `python-config --cflags` -O0 \
  src/capi/*.cpp \
  tests/capi/test_capi.cpp \
  -o test_capi \
  -L"$(python-config --prefix)/lib" \
  `python-config --ldflags` \
  `net-snmp-config --libs`
LD_LIBRARY_PATH="$(python-config --prefix)/lib" ./test_capi

# C++ testing (CLANG)

Known Limitations

  • The library only supports SNMPv2 at this time.

  • BULKGET_REQUEST and NEXT_REQUEST will always perform a walk.

  • Walks will always end if the root of the OID runs past the requested OID.

  • Duplicate objects on the same host/request will be silently discarded.

    • This includes the initial request; walks must be performed on an OID prior to the first desired.

  • NO_SUCH_INSTANCE, NO_SUCH_OBJECT, and END_OF_MIB_VIEW response variable bindings are exposed as errors for handling by the client.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

snmp-fetch-0.1.6.tar.gz (29.3 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page