# Gufo SNMP
*The accelerated Python SNMP client library.*
[![PyPi version](https://img.shields.io/pypi/v/gufo_snmp.svg)](https://pypi.python.org/pypi/gufo_snmp/)
![Python Versions](https://img.shields.io/pypi/pyversions/gufo_snmp)
[![License](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
![Build](https://img.shields.io/github/actions/workflow/status/gufolabs/gufo_snmp/tests.yml?branch=master)
![Sponsors](https://img.shields.io/github/sponsors/gufolabs)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v0.json)](https://github.com/charliermarsh/ruff)
---
**Documentation**: [https://docs.gufolabs.com/gufo_snmp/](https://docs.gufolabs.com/gufo_snmp/)
**Source Code**: [https://github.com/gufolabs/gufo_snmp/](https://github.com/gufolabs/gufo_snmp/)
---
*Gufo SNMP* is the accelerated Python SNMP client library supporting both async and synchronous mode.
It consists of a clean Python API for high-efficient BER parser
and socket IO, implemented in the
[Rust][Rust] language with [PyO3][PyO3] wrapper.
The querying of the single MIB key is a simple task:
``` py
from gufo.snmp import SnmpSession
async with SnmpSession(addr="127.0.0.1", community="public") as session:
r = await session.get("1.3.6.1.2.1.1.3.0")
```
And the blocking mode shares virtually the same API:
``` py
from gufo.snmp.sync_client import SnmpSession
with SnmpSession(addr="127.0.0.1", community="public") as session:
r = session.get("1.3.6.1.2.1.1.3.0")
```
Multiple keys can be queried by one request too:
``` py
async with SnmpSession(addr="127.0.0.1", community="public") as session:
r = await session.get_many(["1.3.6.1.2.1.1.3.0", "1.3.6.1.2.1.1.2.0"])
```
The querying of the MIB parts is also available with GetNext request:
``` py
async with SnmpSession(addr="127.0.0.1", community="public") as session:
async for oid, value in session.getnext("1.3.6.1.2.1.1"):
...
```
And with GetBulk request:
``` py
async with SnmpSession(addr="127.0.0.1", community="public") as session:
async for oid, value in session.getbulk("1.3.6.1.2.1.1"):
...
```
The `.fetch()` method allows to choose between `.getnext()` and `.getbulk()` automatically:
``` py
async with SnmpSession(addr="127.0.0.1", community="public") as session:
async for oid, value in session.fetch("1.3.6.1.2.1.1"):
...
```
SNMPv3 shares same API and semantics:
``` py
async with SnmpSession(
addr="127.0.0.1",
user=User(
"user1",
auth_key=Sha1Key(b"12345678"),
priv_key=Aes128Key(b"87654321")
)
) as session:
r = await session.get("1.3.6.1.2.1.1.3.0")
```
*Gufo SNMP* also allows to limit rate of outgoing requests to protect equipment
from overloading:
``` py
async with SnmpSession(addr="127.0.0.1", community="public", limit_rps=10) as session:
async for oid, value in session.fetch("1.3.6.1.2.1.1"):
...
```
*Gufo SNMP* offers various tools for developers, including a wrapper to
run a local instance of SNMP daemon:
``` py
async with Snmpd(), SnmpSession(addr="127.0.0.1", port=10161) as session:
r = await session.get("1.3.6.1.2.1.1.3.0")
```
## Features
* Clean async and blocking API.
* SNMP v1/v2c/v3 support.
* SNMP v3 User Security Model:
* Authentication: HMAC-MD5-96, HMAC-SHA-96.
* Privacy: DES, AES128.
* Engine ID discovery.
* High-performance.
* Built with security in mind.
* Zero-copy BER parsing.
* Query rate limiting.
* Full Python typing support.
* Editor completion.
* Well-tested, battle-proven code.
* Thoroughly check compatibility with various network equipment.
## Further Roadmap
* SHA2 family of hashes.
* AES256 encryption.
* SNMP Trap and Inform collector.
* Incorporation of the [NOC's][NOC] *Compiled MIB* infrastructure.
## On Gufo Stack
This product is a part of [Gufo Stack][Gufo Stack] - the collaborative effort
led by [Gufo Labs][Gufo Labs]. Our goal is to create a robust and flexible
set of tools to create network management software and automate
routine administration tasks.
To do this, we extract the key technologies that have proven themselves
in the [NOC][NOC] and bring them as separate packages. Then we work on API,
performance tuning, documentation, and testing. The [NOC][NOC] uses the final result
as the external dependencies.
[Gufo Stack][Gufo Stack] makes the [NOC][NOC] better, and this is our primary task. But other products
can benefit from [Gufo Stack][Gufo Stack] too. So we believe that our effort will make
the other network management products better.
[Gufo Labs]: https://gufolabs.com/
[Gufo Stack]: https://gufolabs.com/products/gufo-stack/
[NOC]: https://getnoc.com/
[Rust]: https://rust-lang.org/
[PyO3]: https://pyo3.rs/
Raw data
{
"_id": null,
"home_page": "",
"name": "gufo-snmp",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "",
"keywords": "error",
"author": "Gufo Labs",
"author_email": "",
"download_url": "https://files.pythonhosted.org/packages/08/d7/31723f2fb8476e29143f6870fbb78a91fdfffda5787c50567a6caa3708a0/gufo_snmp-0.5.1.tar.gz",
"platform": null,
"description": "# Gufo SNMP\n\n*The accelerated Python SNMP client library.*\n\n[![PyPi version](https://img.shields.io/pypi/v/gufo_snmp.svg)](https://pypi.python.org/pypi/gufo_snmp/)\n![Python Versions](https://img.shields.io/pypi/pyversions/gufo_snmp)\n[![License](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)\n![Build](https://img.shields.io/github/actions/workflow/status/gufolabs/gufo_snmp/tests.yml?branch=master)\n![Sponsors](https://img.shields.io/github/sponsors/gufolabs)\n[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v0.json)](https://github.com/charliermarsh/ruff)\n\n---\n\n**Documentation**: [https://docs.gufolabs.com/gufo_snmp/](https://docs.gufolabs.com/gufo_snmp/)\n\n**Source Code**: [https://github.com/gufolabs/gufo_snmp/](https://github.com/gufolabs/gufo_snmp/)\n\n---\n\n*Gufo SNMP* is the accelerated Python SNMP client library supporting both async and synchronous mode.\nIt consists of a clean Python API for high-efficient BER parser\nand socket IO, implemented in the \n[Rust][Rust] language with [PyO3][PyO3] wrapper.\n\nThe querying of the single MIB key is a simple task:\n\n``` py\nfrom gufo.snmp import SnmpSession\n\nasync with SnmpSession(addr=\"127.0.0.1\", community=\"public\") as session:\n r = await session.get(\"1.3.6.1.2.1.1.3.0\")\n```\n\nAnd the blocking mode shares virtually the same API:\n\n``` py\nfrom gufo.snmp.sync_client import SnmpSession\n\nwith SnmpSession(addr=\"127.0.0.1\", community=\"public\") as session:\n r = session.get(\"1.3.6.1.2.1.1.3.0\")\n```\n\nMultiple keys can be queried by one request too:\n\n``` py\nasync with SnmpSession(addr=\"127.0.0.1\", community=\"public\") as session:\n r = await session.get_many([\"1.3.6.1.2.1.1.3.0\", \"1.3.6.1.2.1.1.2.0\"])\n```\n\nThe querying of the MIB parts is also available with GetNext request:\n\n``` py\nasync with SnmpSession(addr=\"127.0.0.1\", community=\"public\") as session:\n async for oid, value in session.getnext(\"1.3.6.1.2.1.1\"):\n ...\n```\n\nAnd with GetBulk request:\n\n``` py\nasync with SnmpSession(addr=\"127.0.0.1\", community=\"public\") as session:\n async for oid, value in session.getbulk(\"1.3.6.1.2.1.1\"):\n ...\n```\n\nThe `.fetch()` method allows to choose between `.getnext()` and `.getbulk()` automatically:\n``` py\nasync with SnmpSession(addr=\"127.0.0.1\", community=\"public\") as session:\n async for oid, value in session.fetch(\"1.3.6.1.2.1.1\"):\n ...\n```\n\nSNMPv3 shares same API and semantics:\n\n``` py\nasync with SnmpSession(\n addr=\"127.0.0.1\",\n user=User(\n \"user1\",\n auth_key=Sha1Key(b\"12345678\"),\n priv_key=Aes128Key(b\"87654321\")\n )\n) as session:\n r = await session.get(\"1.3.6.1.2.1.1.3.0\")\n```\n\n*Gufo SNMP* also allows to limit rate of outgoing requests to protect equipment\nfrom overloading:\n\n``` py\nasync with SnmpSession(addr=\"127.0.0.1\", community=\"public\", limit_rps=10) as session:\n async for oid, value in session.fetch(\"1.3.6.1.2.1.1\"):\n ...\n```\n\n\n*Gufo SNMP* offers various tools for developers, including a wrapper to\nrun a local instance of SNMP daemon:\n\n``` py\nasync with Snmpd(), SnmpSession(addr=\"127.0.0.1\", port=10161) as session:\n r = await session.get(\"1.3.6.1.2.1.1.3.0\")\n```\n\n## Features\n\n* Clean async and blocking API.\n* SNMP v1/v2c/v3 support.\n* SNMP v3 User Security Model:\n * Authentication: HMAC-MD5-96, HMAC-SHA-96.\n * Privacy: DES, AES128.\n * Engine ID discovery.\n* High-performance.\n* Built with security in mind.\n* Zero-copy BER parsing.\n* Query rate limiting.\n* Full Python typing support.\n* Editor completion.\n* Well-tested, battle-proven code.\n* Thoroughly check compatibility with various network equipment.\n\n## Further Roadmap\n\n* SHA2 family of hashes.\n* AES256 encryption.\n* SNMP Trap and Inform collector.\n* Incorporation of the [NOC's][NOC] *Compiled MIB* infrastructure.\n\n## On Gufo Stack\n\nThis product is a part of [Gufo Stack][Gufo Stack] - the collaborative effort \nled by [Gufo Labs][Gufo Labs]. Our goal is to create a robust and flexible \nset of tools to create network management software and automate \nroutine administration tasks.\n\nTo do this, we extract the key technologies that have proven themselves \nin the [NOC][NOC] and bring them as separate packages. Then we work on API,\nperformance tuning, documentation, and testing. The [NOC][NOC] uses the final result\nas the external dependencies.\n\n[Gufo Stack][Gufo Stack] makes the [NOC][NOC] better, and this is our primary task. But other products\ncan benefit from [Gufo Stack][Gufo Stack] too. So we believe that our effort will make \nthe other network management products better.\n\n[Gufo Labs]: https://gufolabs.com/\n[Gufo Stack]: https://gufolabs.com/products/gufo-stack/\n[NOC]: https://getnoc.com/\n[Rust]: https://rust-lang.org/\n[PyO3]: https://pyo3.rs/\n",
"bugtrack_url": null,
"license": "BSD 3-Clause License",
"summary": "",
"version": "0.5.1",
"project_urls": {
"Bug Tracker": "https://github.com/gufolabs/gufo_snmp/issues",
"Changelog": "https://github.com/gufolabs/gufo_snmp/blob/master/CHANGELOG.md",
"Documentation": "https://docs.gufolabs.com/gufo_snmp/",
"Homepage": "https://github.com/gufolabs/gufo_snmp/",
"Source Code": "https://github.com/gufolabs/gufo_snmp/"
},
"split_keywords": [
"error"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "bf0798d67b737038eb824abc08132d00459d53a54e94e9a1ea4377372cd94beb",
"md5": "5ecc4f2d1fa8485b313b05728db6ad40",
"sha256": "2b274c9ebfbef6b27c9dec5e08ea1a7969804a13a61d8ae3c721c331a326baa1"
},
"downloads": -1,
"filename": "gufo_snmp-0.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "5ecc4f2d1fa8485b313b05728db6ad40",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 416267,
"upload_time": "2024-02-28T11:04:59",
"upload_time_iso_8601": "2024-02-28T11:04:59.839080Z",
"url": "https://files.pythonhosted.org/packages/bf/07/98d67b737038eb824abc08132d00459d53a54e94e9a1ea4377372cd94beb/gufo_snmp-0.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f062f60d6932feb6f04ff6b8417ec87cf89dbd946f1c876d4bff94e05472314e",
"md5": "392d0c79a5e51d9cb376ca898ad34113",
"sha256": "c75cc2dfb156e9cf53781228c8e3d4a1bea235e003ecc1d370d37a361368d392"
},
"downloads": -1,
"filename": "gufo_snmp-0.5.1-cp310-cp310-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "392d0c79a5e51d9cb376ca898ad34113",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 416726,
"upload_time": "2024-02-28T11:05:01",
"upload_time_iso_8601": "2024-02-28T11:05:01.820974Z",
"url": "https://files.pythonhosted.org/packages/f0/62/f60d6932feb6f04ff6b8417ec87cf89dbd946f1c876d4bff94e05472314e/gufo_snmp-0.5.1-cp310-cp310-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "10e63aa054595ecf27cc2b0ce90599e78383e61165e7fa80e0bf4e1a8572e0a1",
"md5": "5532713cde5d08197b10446f0c388efb",
"sha256": "d1c12c61196252869a5223aeae3552a5fc195f8be1a9475857aad2f4f8aa7303"
},
"downloads": -1,
"filename": "gufo_snmp-0.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "5532713cde5d08197b10446f0c388efb",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 415867,
"upload_time": "2024-02-28T11:05:03",
"upload_time_iso_8601": "2024-02-28T11:05:03.200113Z",
"url": "https://files.pythonhosted.org/packages/10/e6/3aa054595ecf27cc2b0ce90599e78383e61165e7fa80e0bf4e1a8572e0a1/gufo_snmp-0.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e8d060c833a8feab72de349b88807a52d7f3bf0dcbdbe7c4704baa4bbed80ecd",
"md5": "06f68392d4cae51991820c4eff1576b7",
"sha256": "9e680587116b3dd2f094d16db25a66ece07e69500e4d13128eeb3e4952061850"
},
"downloads": -1,
"filename": "gufo_snmp-0.5.1-cp311-cp311-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "06f68392d4cae51991820c4eff1576b7",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 416395,
"upload_time": "2024-02-28T11:05:04",
"upload_time_iso_8601": "2024-02-28T11:05:04.355683Z",
"url": "https://files.pythonhosted.org/packages/e8/d0/60c833a8feab72de349b88807a52d7f3bf0dcbdbe7c4704baa4bbed80ecd/gufo_snmp-0.5.1-cp311-cp311-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "333fa425d767d6db98b7238236586e08a31e63a3bb101b0141ddfa75806ddad4",
"md5": "b20ea817fb87ea9e670e12f03306dbfd",
"sha256": "2ba00267041d2225a059fcda0d3601c26e05ec3b91a4281cc0726069ddd71f6b"
},
"downloads": -1,
"filename": "gufo_snmp-0.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "b20ea817fb87ea9e670e12f03306dbfd",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 415566,
"upload_time": "2024-02-28T11:05:05",
"upload_time_iso_8601": "2024-02-28T11:05:05.858498Z",
"url": "https://files.pythonhosted.org/packages/33/3f/a425d767d6db98b7238236586e08a31e63a3bb101b0141ddfa75806ddad4/gufo_snmp-0.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a07cb195bfeeb3a19176599f6abfc3ad49ebdbc66f9d0224c1fbe04255a581dd",
"md5": "f8b42ee7af15f1513d95f5cbaf8a865a",
"sha256": "e0070210540aa2cd3dbd03b47ff316a93bf5bf40f7ddb9777f8ca2610f224830"
},
"downloads": -1,
"filename": "gufo_snmp-0.5.1-cp312-cp312-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "f8b42ee7af15f1513d95f5cbaf8a865a",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 415985,
"upload_time": "2024-02-28T11:05:07",
"upload_time_iso_8601": "2024-02-28T11:05:07.251493Z",
"url": "https://files.pythonhosted.org/packages/a0/7c/b195bfeeb3a19176599f6abfc3ad49ebdbc66f9d0224c1fbe04255a581dd/gufo_snmp-0.5.1-cp312-cp312-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "08d2e2bd7e12567ac0bf205496945fb379ec6e22c04ab00db0e846f67bbf9f07",
"md5": "4c86a222ba7a9e9e8322f083232ec5db",
"sha256": "64d29d84d92c0ce4547ca47d64aa7bfdaa6bfee19ae83215972019f7ece38df5"
},
"downloads": -1,
"filename": "gufo_snmp-0.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "4c86a222ba7a9e9e8322f083232ec5db",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 415434,
"upload_time": "2024-02-28T11:05:08",
"upload_time_iso_8601": "2024-02-28T11:05:08.606448Z",
"url": "https://files.pythonhosted.org/packages/08/d2/e2bd7e12567ac0bf205496945fb379ec6e22c04ab00db0e846f67bbf9f07/gufo_snmp-0.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d56af8e77f0683ce794b6d320aad8f2195b0bc12d5186e1f04619f775de6da51",
"md5": "2aec910d3ffd7dfc81e10dbb94b029a3",
"sha256": "3c5bbe786238972f51b1a3d537b9a537d2ec519b967b3b5e8af35c1a2e29da77"
},
"downloads": -1,
"filename": "gufo_snmp-0.5.1-cp38-cp38-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "2aec910d3ffd7dfc81e10dbb94b029a3",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 415936,
"upload_time": "2024-02-28T11:05:10",
"upload_time_iso_8601": "2024-02-28T11:05:10.551016Z",
"url": "https://files.pythonhosted.org/packages/d5/6a/f8e77f0683ce794b6d320aad8f2195b0bc12d5186e1f04619f775de6da51/gufo_snmp-0.5.1-cp38-cp38-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d8c15225b4ebd5863e2f6dfdd6679e578516d5ea72864964d26715db8ab0021c",
"md5": "f18f8c42d539bb64424b7af705e6e13c",
"sha256": "e71b4d40199ad714e6e4544b99acaa4feb3d16cb53c4936bc2f0d42d0b0c4705"
},
"downloads": -1,
"filename": "gufo_snmp-0.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "f18f8c42d539bb64424b7af705e6e13c",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 416818,
"upload_time": "2024-02-28T11:05:11",
"upload_time_iso_8601": "2024-02-28T11:05:11.762647Z",
"url": "https://files.pythonhosted.org/packages/d8/c1/5225b4ebd5863e2f6dfdd6679e578516d5ea72864964d26715db8ab0021c/gufo_snmp-0.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8a95c9aa92d45cb57f4336e0b36d59e1018614f326eb21e0a9f61217c1f37d7c",
"md5": "92ffd8929d8cc48af549244a3818ef30",
"sha256": "9ad691ece02a79c943e6d43564a6c72830f725eb01f55e52daf45f11e56893d2"
},
"downloads": -1,
"filename": "gufo_snmp-0.5.1-cp39-cp39-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "92ffd8929d8cc48af549244a3818ef30",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 417341,
"upload_time": "2024-02-28T11:05:13",
"upload_time_iso_8601": "2024-02-28T11:05:13.570374Z",
"url": "https://files.pythonhosted.org/packages/8a/95/c9aa92d45cb57f4336e0b36d59e1018614f326eb21e0a9f61217c1f37d7c/gufo_snmp-0.5.1-cp39-cp39-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "08d731723f2fb8476e29143f6870fbb78a91fdfffda5787c50567a6caa3708a0",
"md5": "f0e51867c0f66d267466d970bbca2303",
"sha256": "92641fcd762604b7d9bb68bb144b3af7f2cf6df6e73f5bf76b090653783b9574"
},
"downloads": -1,
"filename": "gufo_snmp-0.5.1.tar.gz",
"has_sig": false,
"md5_digest": "f0e51867c0f66d267466d970bbca2303",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 34285,
"upload_time": "2024-02-28T11:05:14",
"upload_time_iso_8601": "2024-02-28T11:05:14.705943Z",
"url": "https://files.pythonhosted.org/packages/08/d7/31723f2fb8476e29143f6870fbb78a91fdfffda5787c50567a6caa3708a0/gufo_snmp-0.5.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-02-28 11:05:14",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "gufolabs",
"github_project": "gufo_snmp",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "gufo-snmp"
}