【问题标题】:pysnmp send request not workingpysnmp 发送请求不起作用
【发布时间】:2017-03-16 14:12:30
【问题描述】:

我是专门针对 snmp 的网络编程新手。我只想在本地发送一个简单的 snmp 请求,看看它给出了什么。到目前为止,文档并没有真正说明 send 方法。这就是我所遵循的examplethis。我首先使用它们,但后来对它们进行了定制,如下所示:

from pysnmp.hlapi import *
g = getCmd(SnmpEngine(),
CommunityData('public'),
UdpTransportTarget(('demo.snmplabs.com', 161)),
ContextData(),
ObjectType(ObjectIdentity('TCP-MIB', 'tcpConnectionState',
                         'ipv4', '127.0.0.1', 41511,
                         'ipv4', '127.0.0.1', 993)
)
)
g.send([ObjectType(ObjectIdentity('IF-MIB', 'ifInOctets'))])

但是我收到了这个错误:

TypeError: can't send non-None value to a just-started generator

【问题讨论】:

    标签: python networking network-programming pysnmp


    【解决方案1】:

    您要做的是将值发送到 Python 生成器,而不是发送到对等 SNMP 代理。只需使用next() 代替(或将该生成器放入循环中),以便在第一次迭代时将 SNMP 数据包推送到网络。这是example

    【讨论】:

    • 感谢您的回答。现在我没有得到的是如何指定我想要的信息类型。比如arp表信息
    • 一般来说,这取决于您正在与之通信的 SNMP 设备的类型。您可以尝试 wakling BRIDGE-MIB::dot1dTpFdbTable(即 1.3.6.1.2.1.17.4.3)。
    • 再次感谢。它确实奏效了。你知道它有什么好的文档吗?我正在获取 MAC 地址,但我无法识别 IP 地址。它们应该包含在 OID 响应中,但看起来完全不同,它们现在就像 1.3.6.1.2.1.17.4.3.x.xxx.x.xxx.xxx.xxx.xxx.xxx.xx。有没有办法获取ip地址呢?
    • @user4237435 您必须从 OID 中提取值(例如 IP)而不是查询特定的 OID 以获得所需的值,这是非常不寻常的。您确定您的 MIB 不提供可让您执行GET OID -> IP 的 MIB 对象吗?如果没有,您提到您的响应 OID 嵌入了您需要的 IP - 您可以从那里获取它吗?
    • @user4237435 我现在认为您可能遇到了this 问题。如果您仍然需要解决它,我建议您在该 pysnmp 问题中提交更多详细信息(或打开一个新问题)。复制器会特别有用!
    猜你喜欢
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 2018-09-18
    • 2017-04-28
    相关资源
    最近更新 更多