PySNMP中文1、SNMP library for Python

PySNMP是一款跨平台、纯Python实现的SNMP引擎接口,具备SNMP引擎的所有功能,包括Agent/Manager/Proxy角色,支持v1/v2c/v3版本及IPv4/IPv6等网络协议。PySNMP不仅提供了强大的功能,还附带了模仿Net-SNMP的命令行工具,适用于跨平台使用和测试。最新版本为4.4,兼容Python2.4至3.7版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SNMP library for Python

PySNMP是一个跨平台,纯Python实现的SNMP engine接口。它具有SNMP engine的所有功能,包含Agent/Manager/Proxy三种角色,协议的三个版本v1/v2c/v3可以使用IPv4/IPv6和其他网络传输协议。

尽管SNMP这个名词看上去是简单的网络管理协议,然而事实并非如此。比如它的第三个版本v3引入了复杂开放的安全框架、多语言功能、远程配置以及其他功能。PySNMP的细节和功能实现很复杂,尽可能给用户带来强大灵活的功能。

当前PySNMP稳定版本为4.4,可以运行在从Python2.4到3.7版本上,推荐使用最新的PySNMP版本,并将老版本、废弃版本的应用使用PySNMP最新版替换。当前的文档均基于最新的4.4版本以及稍晚的更新版本。以前版本的材料可以在obsolete section找到。

除了library库以外,系统还附带了一组纯Python命令行工具。这些工具模仿Net-SNMP的功能,主要有snmpget/snmpset/snmpwalk,可能在跨平台的情况下很有用,也可以作为pysnmp用户的测试和原型工具。

PySNMP这款软件是免费且开源的。源码存放在Github repo中。基于2-clause BSD-style license发布。

PySNMP的开发最初由Python软件基金会资助。

快速开始

如果你已经了解了SNMP的相关知识,但还没有尝试深入了解并使用它,那就从这里开始吧!

文档

Example

下载

最好的方式

# pip install pysnmp -i https://pypi.douban.com/simple

若有故不能执此行,可参阅 下载PySNMP

发行许可

常见问题

在Linux平台上使用Qt进行SNMP开发,可以选择多个开发库来实现功能。以下是几种常见的开发方式及其特点: ### SNMP开发库的选择 1. **Net-SNMP** Net-SNMP 是一个广泛使用的 C 语言版本的 SNMP 开发包,最初由卡内基梅隆大学开发,后来成为主流的 SNMP 实现之一。它在嵌入式系统和网络设备中具有天然优势,并且在功能、性能、可靠性、可移植性方面表现优异。如果项目对底层控制有较高要求,Net-SNMP 是一个非常合适的选择。[^3] 2. **SNMP++** SNMP++ 是一个基于 C++ 的 SNMP 开发库,最初由惠普公司开发。它提供了面向对象的设计,并封装了简单的 API 接口,使得开发更加直观和安全。SNMP++ 支持内存管理机制,有助于防止内存泄漏。在 Linux 平台上,需要将 `libsnmp++.a` 或 `.so` 文件与 `libdes.a` 一起导入,并注意导入顺序:先导入 `libsnmp++.a` 或 `.so`,再导入 `libdes.a` [^4]。 3. **Python 版本 PySNMP** 如果项目允许使用 PythonPySNMP 是一个跨平台的开源库,支持多种 SNMP 协议版本,并且具有良好的可扩展性。它适用于需要快速开发和调试的场景,但在性能要求较高的情况下可能不如 C/C++ 实现高效 [^1]。 ### Qt 项目的配置与编译 在 Linux 环境下,使用 Qt Creator 编译基于 SNMP++ 的项目时,需要进行以下步骤: 1. 创建一个 C++ Library 类型的 Qt 工程,命名为 `snmp_dev`。 2. 选择共享库(Shared Library)类型,以便生成 `.so` 文件。 3. 将 SNMP++ 和 Agent++ 的源代码复制到项目目录中。 4. 在 `.pro` 文件中添加库文件依赖项,例如: ```qmake LIBS += -L/usr/local/lib -lsnmp++ -ldes ``` 确保路径正确,并且库文件已经编译安装到系统目录中 [^2]。 5. 头文件方面,需要将 `snmp_pp` 文件夹下的内容放置在项目包含路径中。在 Linux 下,不需要额外的 `config.h` 和 `libsnmp.h`,但这些文件在 Windows 平台下是必需的 [^4]。 ### 示例代码 以下是一个简单的 SNMP GET 请求示例,使用 SNMP++ 库实现: ```cpp #include <snmp_pp/snmp_pp.h> #include <iostream> int main() { // 初始化 SNMP++ 库 Snmp::socket_startup(); // 定义目标设备地址和端口 UdpAddress address("192.168.1.1/161"); // 定义社区字符串 OctetStr community("public"); // 创建 SNMP 会话 Snmp snmp(0, "0.0.0.0"); Pdu pdu; Vb vb; // 设置 OID vb.set_oid("1.3.6.1.2.1.1.1.0"); // sysDescr.0 pdu += vb; // 发送 GET 请求 snmp.get(pdu, address, community); // 解析响应 for (int i = 0; i < pdu.vb_count(); ++i) { pdu.get_vb(vb, i); std::cout << "OID: " << vb.get_oid() << ", Value: " << vb.get_value() << std::endl; } // 清理资源 Snmp::socket_cleanup(); return 0; } ``` ### 编译与运行 确保在编译时链接 SNMP++ 和 DES 库,例如使用 g++ 编译器: ```bash g++ -o snmp_get snmp_get.cpp -lsnmp++ -ldes ``` 运行程序后,它将向指定的 SNMP 代理发送 GET 请求,并输出设备的系统描述信息。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值