|Python Code Style| |Black| |Pull Request Sphinx Docs Check| |PyPI Distributions| |TestPyPI Distributions| |Tests| |License|
.. |Python Code Style| image:: https://img.shields.io/badge/code%20style-black-000000.svg :target: https://github.com/psf/black .. |Black| image:: https://github.com/carlkidcrypto/ezsnmp/actions/workflows/black.yml/badge.svg :target: https://github.com/carlkidcrypto/ezsnmp/actions/workflows/black.yml .. |Pull Request Sphinx Docs Check| image:: https://github.com/carlkidcrypto/ezsnmp/actions/workflows/sphinx_build.yml/badge.svg :target: https://github.com/carlkidcrypto/ezsnmp/actions/workflows/sphinx_build.yml .. |PyPI Distributions| image:: https://github.com/carlkidcrypto/ezsnmp/actions/workflows/build_and_publish_to_pypi.yml/badge.svg :target: https://github.com/carlkidcrypto/ezsnmp/actions/workflows/build_and_publish_to_pypi.yml .. |TestPyPI Distributions| image:: https://github.com/carlkidcrypto/ezsnmp/actions/workflows/build_and_publish_to_test_pypi.yml/badge.svg :target: https://github.com/carlkidcrypto/ezsnmp/actions/workflows/build_and_publish_to_test_pypi.yml .. |Tests| image:: https://github.com/carlkidcrypto/ezsnmp/actions/workflows/tests.yml/badge.svg :target: https://github.com/carlkidcrypto/ezsnmp/actions/workflows/tests.yml .. |License| image:: https://img.shields.io/badge/license-BSD-blue.svg :target: https://github.com/carlkidcrypto/ezsnmp/blob/master/LICENSE
.. image:: https://github.com/carlkidcrypto/ezsnmp/blob/main/images/ezsnmp_logo.jpeg :alt: Ez SNMP Logo
Ez SNMP is a fork of Easy SNMP <http://net-snmp.sourceforge.net/wiki/index.php/Python_Bindings>
__
Easy SNMP
seems to have abandoned the project and or isn't actively working on it.Python <https://devguide.python.org/versions/>
and net-snmp versions that are supported by Net-SNMP <http://www.net-snmp.org/download.html>
.. image:: https://github.com/carlkidcrypto/ezsnmp/blob/main/images/buy_me_a_coffee.png :alt: Buy Me A Coffee.
Use this link to buy me a coffee! <https://www.buymeacoffee.com/carlkidcrypto>
__
There are primarily two ways you can use the Ez SNMP library:
.. code:: python
from ezsnmp import Session
# Create an SNMP session to be used for all our requests
session = Session(hostname='localhost', community='public', version=2)
# You may retrieve an individual OID using an SNMP GET
location = session.get('sysLocation.0')
# You may also specify the OID as a tuple (name, index)
# Note: the index is specified as a string as it can be of other types than
# just a regular integer
contact = session.get(('sysContact', '0'))
# And of course, you may use the numeric OID too
description = session.get('.1.3.6.1.2.1.1.1.0')
# Set a variable using an SNMP SET
session.set('sysLocation.0', 'The SNMP Lab')
# Perform an SNMP walk
system_items = session.walk('system')
# Each returned item can be used normally as its related type (str or int)
# but also has several extended attributes with SNMP-specific information
for item in system_items:
print '{oid}.{oid_index} {snmp_type} = {value}'.format(
oid=item.oid,
oid_index=item.oid_index,
snmp_type=item.snmp_type,
value=item.value
)
.. code:: python
from ezsnmp import snmp_get, snmp_set, snmp_walk
# Grab a single piece of information using an SNMP GET
snmp_get('sysDescr.0', hostname='localhost', community='public', version=1)
# Perform an SNMP SET to update data
snmp_set(
'sysLocation.0', 'My Cool Place',
hostname='localhost', community='public', version=1
)
# Perform an SNMP walk
snmp_walk('system', hostname='localhost', community='public', version=1)
Please check out the Ez SNMP documentation at <http://carlkidcrypto.github.io/ezsnmp/>
_. This includes installation
instructions for various operating systems.
You may generate the documentation as follows:
.. code:: bash
# Install Sphinx
# See this website for install instructions https://www.sphinx-doc.org/en/master/usage/installation.html
# Build the documentation into static HTML pages
cd sphinx_docs_build
make html
I'd like to say thanks to the following folks who have made this project possible:
Easy SNMP <https://github.com/easysnmp/easysnmp>
_Tests use Pytest <https://github.com/pytest-dev/pytest>
_. You can run
them with the following on Linux:
.. code:: bash
git clone https://github.com/ezsnmp/ezsnmp.git;
cd ezsnmp;
sudo apt update && sudo apt upgrade -y;
sudo apt install -y snmp snmpd libsnmp-dev libperl-dev snmp-mibs-downloader valgrind;
sudo apt install -y python3-pip python3-dev python3-setuptools gdb -y;
sudo systemctl stop snmpd;
sudo mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.orig;
sudo cp tests/snmpd.conf /etc/snmp/snmpd.conf;
sudo download-mibs;
mkdir -p -m 0755 ~/.snmp;
echo 'mibs +ALL' > ~/.snmp/snmp.conf;
sudo systemctl start snmpd;
rm -drf build/ dist/ ezsnmp.egg-info;
python3 -m pip install -r requirements.txt;
python3 -m pip install . && pytest;
# Bottom one for debug. Replace the top one with it if needed.
# python3 -m pip install . && gdb -ex run -ex bt -ex quit --args python3 -m pytest .;
# Bottom one for valgrind. Replace the top one with it if needed.
# python3 -m pip install . && valgrind --tool=memcheck --leak-check=full --show-leak-kinds=definite,indirect,possible python3 -m pytest .
# Bottom one for valgrind using helgrind. Replace the top one with it if needed.
# python3 -m pip install . && valgrind --tool=helgrind --free-is-write=yes python3 -m pytest .
On MacOS
.. code:: bash
git clone https://github.com/ezsnmp/ezsnmp.git;
cd ezsnmp;
sudo mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.orig;
sudo cp tests/snmpd.conf /etc/snmp/snmpd.conf;
sudo launchctl unload /System/Library/LaunchDaemons/org.net-snmp.snmpd.plist;
sudo launchctl load -w /System/Library/LaunchDaemons/org.net-snmp.snmpd.plist;
rm -drf build/ dist/ ezsnmp.egg-info;
python3 -m pip install -r requirements.txt;
python3 -m pip install . && pytest;
For Linux builds on a Linux machine
.. code:: bash
clear && rm -drf wheelhouse/ build/ ezsnmp.egg-info/ && python3 -m cibuildwheel --output-dir wheelhouse --platform linux
For MacOS builds on a MacOS machine
.. code:: bash
clear && rm -drf wheelhouse/ build/ ezsnmp.egg-info/ && python3 -m cibuildwheel --output-dir wheelhouse --platform macos
For c++ code:
.. code:: bash
find . -iname '*.h' -o -iname '*.cpp' | xargs clang-format -i --style=file:.clang-format
For python3 code:
.. code:: bash
python3 -m black .
Ez SNMP is released under the BSD license. Please see the
LICENSE <https://github.com/ezsnmp/ezsnmp/blob/master/LICENSE>
_
file for more details.
The original version of this library is copyright (c) 2006 G. S. Marzot. All rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Net-SNMP itself.
Copyright (c) 2006 SPARTA, Inc. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Net-SNMP itself.
Copyright (c) 2024 carlkidcrypto All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Net-SNMP itself.