Python的SNMP库
项目描述
Python的SNMP库
这是一个完全用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)
下载与安装
只需运行
$ pip install pysnmp
以下命令即可下载并安装PySNMP及其依赖项
请确保您检查主页上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 查看哈希值)