如何使用pysnmp获取SNMP数据?

2023-12-30

我想通过使用 python pysnmp 模块获取 snmp 数据。我曾经使用命令行来获取 SNMP 数据,但现在我想使用 pysnmp 模块来读取它。

SNMP命令-

snmpwalk -v 1 -c public <ip address>:<port> xyz::pqr

我正在使用像上面这样的命令。现在我尝试了类似下面的东西 -

import netsnmp

def getmac():
    oid = netsnmp.VarList(netsnmp.Varbind('.1.3.6.1.2.1.17.7.1.2.2.1.2'))
    res = netsnmp.snmpgetbulk(oid, Version = 1, DestHost='ip',
                           Community='pub')
    return res

print getmac()

我面临错误 -导入netsnmp。没有模块 netsnmp

任何人都可以给我建议如何使用 python 从 snmp 服务器获取 snmp 数据?


您似乎正在使用netsnmp模块而不是pysnmp.

如果你想使用pysnmp, then 这个例子 http://pysnmp.sourceforge.net/examples/hlapi/asyncore/sync/manager/cmdgen/snmp-versions.html#snmpv2c可能有帮助:

from pysnmp.hlapi import *

for (errorIndication,
     errorStatus,
     errorIndex,
     varBinds) in nextCmd(SnmpEngine(),
                          CommunityData('public', mpModel=0),
                          UdpTransportTarget(('demo.snmplabs.com', 161)),
                          ContextData(),
                          ObjectType(ObjectIdentity('1.3.6.1.2.1.17.7.1.2.2.1.2'))):
    if errorIndication or errorStatus:
        print(errorIndication or errorStatus)
        break
    else:
        for varBind in varBinds:
            print(' = '.join([x.prettyPrint() for x in varBind]))

UPDATE:

上述循环每次迭代都会获取一个 OID 值。如果您想更有效地获取数据,一种选择是将更多 OID 填充到查询中(以许多形式)ObjectType(...)参数)。

或者您可以切换到 GETBULK PDU 类型,这可以通过更改您的nextCmd呼入bulkCmd 像这样 http://pysnmp.sourceforge.net/docs/hlapi/asyncore/sync/manager/cmdgen/bulkcmd.html#pysnmp.hlapi.bulkCmd.

from pysnmp.hlapi import *

for (errorIndication,
     errorStatus,
     errorIndex,
     varBinds) in bulkCmd(SnmpEngine(),
        CommunityData('public'),
        UdpTransportTarget(('demo.snmplabs.com', 161)),
        ContextData(),
        0, 25,  # fetch up to 25 OIDs one-shot
        ObjectType(ObjectIdentity('1.3.6.1.2.1.17.7.1.2.2.1.2'))):
    if errorIndication or errorStatus:
        print(errorIndication or errorStatus)
        break
    else:
        for varBind in varBinds:
            print(' = '.join([x.prettyPrint() for x in varBind]))

请记住,GETBULK 命令支持首次在 SNMP v2c 中引入,也就是说您不能通过 SNMP v1 使用它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用pysnmp获取SNMP数据? 的相关文章

  • 如何将one-hot向量转换为多标签?

    我有一项多分类任务 并且我得到了像这样的单热类型预测 0 1 1 0 1 0 1 0 1 我希望将这个单热向量转换为标签 例如 1 2 1 0 2 我已经尝试过 tf argmax 但它不起作用 那么我该如何处理呢 使用列表理解 oheLi
  • 如何查找分布式dask中任务失败的原因?

    我正在开发一个分布式计算系统dask distributed 我通过以下方式提交给它的任务Executor map功能有时会失败 而其他看起来相同的功能却可以成功运行 该框架是否提供了诊断问题的方法 update我所说的失败是指增加 Bok
  • Python3+Kivy+Plyer 推送通知图标问题

    我在使用 Android 的简单通知测试应用程序时遇到了一个奇怪的错误 错误 python AttributeError type object notification org notificator R drawable has no
  • 在 python 2 和 3 的spyder之间切换

    根据我在文档中了解到的内容 它指出您只需使用命令提示符创建一个新变量即可轻松在 2 个 python 环境之间切换 如果我已经安装了 python 2 7 则 conda create n python34 python 3 4 anaco
  • 如何有条件地组合两个相同形状的 numpy 数组

    这听起来很简单 但我想我把它想得太复杂了 我想创建一个数组 其元素是从两个形状相同的源数组生成的 具体取决于源数组中哪个元素更大 为了显示 import numpy as np array1 np array 2 3 0 array2 np
  • 蟒蛇 |如何将元素随机添加到列表中

    有没有一种方法可以将元素随机添加到列表中 内置函数 ex def random append lst a lst append b lst append c lst append d lst append e return print ls
  • DataFrame 中的字符串,但 dtype 是对象

    为什么 Pandas 告诉我我有对象 尽管所选列中的每个项目都是一个字符串 即使在显式转换之后也是如此 这是我的数据框
  • 对打开文件的脚本进行单元测试

    我编写了一个脚本 它打开一个文件 读取内容并进行一些操作和计算 并将它们存储在集合和字典中 我该如何为这样的事情编写单元测试 我的问题具体是 我会测试文件是否打开 文件很大 这是unix字典文件 我如何对计算进行单元测试 我真的必须手动计算
  • 为 PyCharm 中的所有配置设置相同的环境变量

    我有一个与 Celery 和很多不同的工作人员一起的项目 如何避免每次将 PyCharm 中的环境变量复制粘贴到每个运行 调试配置 有什么方法可以在项目设置中设置它们吗 找到解决方案here https stackoverflow com
  • 远程控制或脚本打开 Office 从 Python 编辑 Word 文档

    我想 最好在 Windows 上 在特定文档上启动 Open Office 搜索固定字符串并将其替换为我的程序选择的另一个字符串 我该如何从外部 Python 程序中做到这一点 OLE 什么 原生 Python 脚本解决方案 The doc
  • 一起使用 Argparse 和 Json

    我是 Python 初学者 我想知道 Argparse 和 JSON 是否可以一起使用 说 我有变量p q r 我可以将它们添加到 argparse 中 parser add argument p param1 help x variabl
  • 使用reduce方法的斐波那契数列

    于是 我看到有人用reduce方法来计算斐波那契数列 这是他的想法 1 0 1 1 2 1 3 2 5 3 对应于 1 1 2 3 5 8 13 21 代码如下所示 def fib reduce n initial 1 0 dummy ra
  • 如何获取 Matplotlib 生成的散点图的像素坐标?

    我使用 Matplotlib 生成散点图的 PNG 文件 现在 对于每个散点图 除了 PNG 文件之外 我还会also就像生成散点图中各个点的像素坐标列表一样 我用来生成散点图 PNG 文件的代码基本上是这样的 from matplotli
  • 从 Apache 运行 python 脚本的最简单方法

    我花了很长时间试图弄清楚这一点 我基本上正在尝试开发一个网站 当用户单击特定按钮时 我必须在其中执行 python 脚本 在研究了 Stack Overflow 和 Google 之后 我需要配置 Apache 以便能够运行 CGI 脚本
  • 向伪 shell (pty) 发出命令

    我尝试使用 subprocess popen os spawn 来运行进程 但似乎需要伪终端 import pty master slave pty openpty os write master ls l 应该发送 ls l 到从属终端
  • dask allocate() 或 apply() 中的变量列名

    我有适用于pandas 但我在将其转换为使用时遇到问题dask 有一个部分解决方案here https stackoverflow com questions 32363114 how do i change rows and column
  • DRF:以编程方式从 TextChoices 字段获取默认选择

    我们的网站是 Vue 前端 DRF 后端 在一个serializer validate 方法 我需要以编程方式确定哪个选项TextChoices类已被指定为模型字段的默认值 TextChoices 类 缩写示例 class PaymentM
  • Django - 缺少 1 个必需的位置参数:'request'

    我收到错误 get indiceComercioVarejista 缺少 1 个必需的位置参数 要求 当尝试访问 get indiceComercioVarejista 方法时 我不知道这是怎么回事 views from django ht
  • Python 中的迭代器 (iter()) 函数。 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 对于字典 我可以使用iter 用于迭代字典的键 y x 10 y 20 for val in iter y print val 当
  • Python - 打印漂亮的 XML 为空标签文本创建开始和结束标签

    我正在编写一个 python 应用程序 它创建一个 ElementTree XML 然后使用 minidom 的 toprettyxml 将其写入文件 final tree minidom parseString ET tostring r

随机推荐

  • SQL 使用内连接将不存在的行的聚合值设为 0

    我正在使用 SQL Server 查询这三个表 它们看起来像 有一些额外的列 但不那么相关 客户 gt ID 姓名 地址 gt ID 街道 StreetNo CustomerId 销售 gt 地址 ID 周 总计 我想获得每周和客户的总销售
  • 将tinyint映射为布尔休眠

    我在 MySQL 表 TINYINT 1 中有一个 BOOLEAN 类型 并且我试图在实体中映射布尔字段 但这会生成异常 org hibernate HibernateException Wrong column type in maegu
  • SQL Server 存储过程转换为 SSIS 包

    问题 目前我们有大量的存储过程 很长 长达 10 000 行 这些存储过程是由不同的开发人员在过去 10 年中根据不同的需求编写的 现在管理那些复杂 长的存储过程 没有适当的文档 变得很困难 我们计划将这些存储过程移至 SSIS ETL 包
  • PostgreSQL:当将整数转换为非整数类型以强制 PostgreSQL 中的浮点除法时,我应该使用哪种数字类型?

    我知道StackOverflow上有很多整数除法问题 但我没有看到这个 与许多编程语言类似 如果两个操作数都是整数 PostgreSQL 就会执行整数除法 如果一个人有 SELECT s id AS student id COUNT DIS
  • 我的 ASP.NET MVC SelectList 有什么问题?

    我正在尝试使用 SelectList 我的视图之一 但它只是未正确填充 它获得了正确数量的条目 4 但它们都读取了System Web Mvc SelectListItem 我启动了代码调试器 发现发生了一些奇怪的事情 我一定做错了什么 但
  • 如何获得 R 时间序列中下一行和上一行之间的差异?

    我有一个相当大的时间序列 包含 4 个变量的大约 14k 个观察值 date x y z 我怎样才能 与功能相反diff df vector lag 1 它计算当前值之间的差值 t 和上一个 t 1 计算每个值与下一个值 t 1 和之前的值
  • 从 DllMain() 锁定时,Visual Studio 2012 中的 C++11 std::mutex 死锁

    我看到了僵局std mutex当互斥体被锁定时DllMain 下面是一个最小的 DLL 测试用例 它向我展示了这个问题 我的实际代码执行互斥锁定 因为它使用的成员函数也可以在正常函数期间在初始化之外使用 我认为问题是调度程序之间的死锁 如调
  • 模仿 Python 产量的惯用 Clojure 方式

    我正在迭代一个列表 边走边建立状态 偶尔当我遇到某个哨兵时 我会返回一个结果 如果我用 Python 来做这件事 我会懒惰地yield结果 跟踪函数本地范围内的状态 this is simplified for illustration d
  • 计算列表差异[重复]

    这个问题在这里已经有答案了 在Python中 计算两个列表之间差异的最佳方法是什么 example A 1 2 3 4 B 2 5 A B 1 3 4 B A 5 If 顺序并不重要 您可以简单地计算集合差 gt gt gt set 1 2
  • 在 Ada 中实现具有访问类型的抽象函数

    我有一个名为 Statements 的包 其中包含一个名为 Statement 的抽象类型和一个名为execute 的抽象函数 在另一个包中 我有一个CompoundStatement 类型 它是一个Statement 类型 它实现了exe
  • 如何在 WP7 silverlight 中将网格背景更改为图像?

    我正在尝试在 WP7 silverlight 中为网格控件设置背景 我需要以编程方式完成此操作 而不是在设计中 我尝试过类似的东西 ContentPanel Background new BitmapImage new Uri Images
  • 关于最小化代码和最大化数据哲学的思考

    我听说过最小化代码和最大化数据的概念 并且想知道其他人可以就我在构建自己的系统时如何 为什么应该这样做提供什么建议 通常 数据驱动的代码更易于阅读和维护 我知道我见过数据驱动被推向极端并且最终变得非常不可用的情况 我正在考虑我使用过的一些
  • Volusion API - 按日期范围导出订单

    我想按计划按日期范围导出 Volusion 订单 select from orders o where o OrderDate gt 7 20 2015 AND o OrderDate lt 7 23 2015 这可能吗 看来我的网址只能做
  • Android - 验证XML的签名

    我已经在网络上签署了 XML 文档 通过带有 RSA 和 X509 标签的纯 Java 并且我已经实现了 XML pull 解析器 在将 XML 文档中的一些信息解析到特定 URL 之前 我需要验证该文档是否正确一 你知道如何检查XML签名
  • 跨子域使用会话存储

    我有两个域domain1 site com 和domain2 site com 我在domain1 site com 中设置了会话存储 然后无法从同一选项卡获取其他域domain2 site com 上的会话存储 在跨子域导航时是否有其他方
  • Django Models / SQLAlchemy 太臃肿了!有没有真正的 Pythonic DB 模型?

    让事情尽可能简单 但不能更简单 我们能找到修复 Python 数据库世界的解决方案吗 Update Alex Martelli 编写了 lustdb 原型 http groups google com group lustdb 如果您知道任
  • Codeigniter 的活动记录有几个类似或?

    嘿 我在 sql 查询中使用几个 like 时遇到了问题 使用 Codeigniter 的 activerecord 生成 SELECT FROM posts WHERE city LIKE test AND title LIKE OR t
  • 在 Vim 崩溃之前捕获它的错误输出

    这与调试中提到的问题有关 插件 vim latex 在启动时导致 gVim 崩溃 https stackoverflow com questions 7034254 plugin vim latex crashing gvim on sta
  • 如何使用 sklearn 查找 Logistic 回归模型中的 beta 值

    基于Logistic回归函数 我正在尝试从我的模型中提取以下值scikit学习 and Where is the intercept and is the regression coefficient as per the wikipedi
  • 如何使用pysnmp获取SNMP数据?

    我想通过使用 python pysnmp 模块获取 snmp 数据 我曾经使用命令行来获取 SNMP 数据 但现在我想使用 pysnmp 模块来读取它 SNMP命令 snmpwalk v 1 c public