Python SNMP库
项目描述
Python SNMP库
这是一个在2-clause BSD许可证下发布的纯Python、开源和免费实现的v1/v2c/v3 SNMP引擎。
PySNMP项目最初由PSF资助。谢谢!
此仓库是Ilya Etingof的项目etingof/pysnmp的分支,但LeXtudio Inc.正在接管整个PySNMP生态系统,包括库、文档和网站。
Ilya不幸于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-lextudio
下载并安装PySNMP及其依赖项
- PyASN1
- PySMI(仅用于MIB服务)
- 如果需要强大的SNMPv3加密,则可选pysnmpcrypto包
除了库之外,还可以通过以下方式安装纯Python编写的SNMP工具:
$ pip install snmpclitools-lextudio
并且可以使用与传统的Net-SNMP工具非常相似的方式使用它们
$ snmpget.py -v3 -l authPriv -u usr-md5-des -A authkey1 -X privkey1 demo.pysnmp.com sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Linux zeus 4.8.6.5-smp #2 SMP Sun Nov 13 14:58:11 CDT 2016 i686
示例
PySNMP采用分层设计。最高级且最易使用的API称为hlapi。以下是一个关于如何进行SNMP GET的快速示例
from pysnmp.hlapi.asyncio import *
from pysnmp.smi.rfc1902 import ObjectIdentity, ObjectType
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]))
这是发送SNMP TRAP的方法
from pysnmp.hlapi.asyncio import *
snmpEngine = SnmpEngine()
errorIndication, errorStatus, errorIndex, varBinds = await sendNotification(
snmpEngine,
CommunityData('public', mpModel=0),
UdpTransportTarget(('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()
我们维护公开的SNMP代理和TRAP接收器在demo.pysnmp.com。欢迎您在使用任何SNMP软件时进行实验。
$ python3 examples/hlapi/asyncio/manager/cmdgen/usm-sha-aes128.py
SNMPv2-MIB::sysDescr.0 = SunOS zeus.pysnmp.com 4.1.3_U1 1 sun4m
$
$ python3 examples/hlapi/asyncio/agent/ntforg/v3-inform.py
SNMPv2-MIB::sysUpTime.0 = 0
SNMPv2-MIB::snmpTrapOID.0 = SNMPv2-MIB::warmStart
SNMPv2-MIB::sysName.0 = system name
除此之外,PySNMP能够自动从HTTP站点或本地目录获取并使用所需的MIB。您可以为此目的配置任何可用的MIB源(包括这个)。
有关更多示例脚本,请参阅PySNMP网站上的示例部分。
文档
库文档和示例可以在PySNMP文档网站找到。
如果某些事情没有按预期工作,请在GitHub上打开一个问题或在Stack Overflow上提问。
欢迎提交错误报告和PR!;-)
版权(c)2005-2020,Ilya Etingof。版权(c)2022-2024,LeXtudio Inc。保留所有权利。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
pysnmp_lextudio-6.2.1.tar.gz (416.0 kB 查看散列值)
构建版本
pysnmp_lextudio-6.2.1-py3-none-any.whl (272.5 kB 查看散列值)
关闭
pysnmp_lextudio-6.2.1.tar.gz 的散列值
算法 | 散列值 | |
---|---|---|
SHA256 | e54e0ec93ff0b68e511502f9fa5f3704e07fc89e6f7bed489973bde8378b2557 |
|
MD5 | 7d16c4d7b77e84c86ef74d1a8b1b7097 |
|
BLAKE2b-256 | fbb801e548f4a98538596d56bef8120c0a3db52597c9a3f1eba5ab6bd25572c3 |
关闭
pysnmp_lextudio-6.2.1-py3-none-any.whl 的散列值
算法 | 散列值 | |
---|---|---|
SHA256 | 69a8f8650e7f0cdf76e9cdee8d464787fa6e5df79f0d6f004fa8b935f0767a45 |
|
MD5 | 6e7f88544c258057a59a69beb28bc0ba |
|
BLAKE2b-256 | 51d33c46842fc57eca29d6b4494122a0ca6fbd7e1a817cee2c81c925e92e709d |