跳转到主要内容

Python的SNMP库

项目描述

Python的SNMP库

Become a Sponsor PyPI PyPI Downloads Python Versions GitHub license

这是一个完全用Python编写的开源免费实现,提供v1/v2c/v3 SNMP引擎,在2-clause BSD许可下发行。

PySNMP项目最初由PSF赞助。谢谢!

此仓库源自Ilya Etingof的项目etingof/pysnmp,但LeXtudio Inc.已接管整个PySNMP生态系统,包括库、文档和网站。

伊利亚不幸于2022年8月10日去世。公告在此。他的工作对Python社区仍然有很大帮助,我们将怀念他。

特性

  • 完整的SNMPv1/v2c和SNMPv3支持
  • SMI框架用于解析MIB信息并实现SMI管理对象
  • 完整的SNMP实体实现
  • 支持USM扩展安全选项(3DES,192/256位AES加密)
  • 可扩展的网络传输框架(UDP/IPv4,UDP/IPv6)
  • 支持异步基于套接字的IO API
  • Asyncio集成
  • PySMI集成,用于动态MIB编译
  • 内置的仪器公开协议引擎操作
  • Python eggs和py2exe兼容
  • 100% Python,与Python 3.8+兼容
  • MT-safe(如果SnmpEngine是线程局部的话)

特定于SNMPv3模型的特性包括

  • USM身份验证(MD5/SHA-1/SHA-2)和隐私(DES/AES)协议(RFC3414,RFC7860)
  • 基于视图的访问控制,适用于任何SNMP模型(RFC3415)
  • 内置的SNMP代理PDU转换器,用于构建多语言SNMP实体(RFC2576)
  • 远程SNMP引擎配置
  • 可选的SNMP引擎发现
  • 包含标准SNMP应用程序(RFC3413)

下载与安装

PySNMP软件可从PyPIGitHub免费下载。

只需运行

$ pip install pysnmp

以下命令即可下载并安装PySNMP及其依赖项

  • PyASN1
  • PySMI(仅用于MIB服务,必需)
  • 如果存在加密包,将启用强SNMPv3加密

请确保您检查主页上PySNMP的其他相关项目。

示例

PySNMP采用分层设计。最高级且最容易使用的API称为hlapi。以下是一个快速示例,说明如何进行SNMP GET

from pysnmp.hlapi.v1arch.asyncio import *

import asyncio


async def run():
    with Slim(1) as slim:
        errorIndication, errorStatus, errorIndex, varBinds = await slim.get(
            'public',
            'demo.pysnmp.com',
            161,
            ObjectType(ObjectIdentity("SNMPv2-MIB", "sysDescr", 0)),
        )

        if errorIndication:
            print(errorIndication)
        elif errorStatus:
            print(
                "{} at {}".format(
                    errorStatus.prettyPrint(),
                    errorIndex and varBinds[int(errorIndex) - 1][0] or "?",
                )
            )
        else:
            for varBind in varBinds:
                print(" = ".join([x.prettyPrint() for x in varBind]))

asyncio.run(run())

这是发送SNMP TRAP的方式

from pysnmp.hlapi.v3arch.asyncio import *

import asyncio


async def run():
    snmpEngine = SnmpEngine()
    errorIndication, errorStatus, errorIndex, varBinds = await sendNotification(
        snmpEngine,
        CommunityData('public', mpModel=0),
        await UdpTransportTarget.create(('demo.pysnmp.com', 162)),
        ContextData(),
        "trap",
        NotificationType(ObjectIdentity("1.3.6.1.6.3.1.1.5.2")).addVarBinds(
            ("1.3.6.1.6.3.1.1.4.3.0", "1.3.6.1.4.1.20408.4.1.1.2"),
            ("1.3.6.1.2.1.1.1.0", OctetString("my system")),
        ),
    )

    if errorIndication:
        print(errorIndication)

    snmpEngine.closeDispatcher()

asyncio.run(run())

我们在demo.pysnmp.com维护公开可用的SNMP代理和TRAP接收器。您在尝试任何SNMP软件时欢迎使用它。

除此之外,PySNMP能够自动从HTTP站点或本地目录获取并使用所需的MIB。您可以为此目的配置任何可用的MIB源(包括此一个)。

有关更多示例脚本,请参阅PySNMP网站上的示例部分

文档

库文档可以在PySNMP文档网站找到。

如果某些事情没有按预期工作,请了解支持选项

欢迎提交pull requests!;-)

版权(c)1999-2020,伊利亚·埃廷戈夫。版权(c)2022-2024,LeXtudio Inc。版权(c)1999-2024,其他PySNMP贡献者。版权所有。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

pysnmp-7.1.4.tar.gz (442.5 kB 查看哈希值)

上传时间

构建分发

pysnmp-7.1.4-py3-none-any.whl (287.6 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面