我可以从shell发送snmptrap(net snmp utils)命令,相当于-
snmptrap -v2c -c public myhostname.com '' .1.3.6.1.4.1.1234.7.0.1 .1.3.6.1.4.1.1234.7.1 s desktop 1.3.6.1.4.1.1234.7.2 s "TESTING" .1.3.6.1.4.1.1234.7.3 s CODE
我正试图通过Python3做同样的事。从脚本发送的陷阱消息由服务器/代理/管理器接收和处理。但是来自python的代码和输出(粘贴在下面)没有成功到达服务器。在
到目前为止,我一直在使用pysnmp
^{pr2}$输出是
{02snmp()允许访问信息:2019:01: 2019-05-03 12:16:02884 pysnmp:状态信息:{'errorIndication':AccessAllowed()} 2019-05-03 12:16:02886 pysnmp:状态信息:{'errorIndication':AccessAllowed()} 2019-05-03 12:16:02891 pysnmp:状态信息:{'errorIndication':AccessAllowed()} 2019-05-03 12:16:02899 pysnmp:prepareOutgoingMessage:使用contextEngineId子规范,>;编码iso-885 9-1有效载荷[0x80004fb805c3c8cf48]>;contextName b'' 2019-05-03 12:16:02904 pysnmp:生成请求sg:消息:
version=1
community=public
data=PDUs:
snmpV2-trap=SNMPv2TrapPDU:
request-id=10163951
error-status=noError
error-index=0
variable-bindings=VarBindList:
VarBind:
name=1.3.6.1.2.1.1.3.0
=_BindValue:
value=ObjectSyntax:
application-wide=ApplicationSyntax:
timeticks-value=0
VarBind:
name=1.3.6.1.6.3.1.1.4.1.0
=_BindValue:
value=ObjectSyntax:
simple=SimpleSyntax:
objectID-value=1.3.6.1.6.3.1.1.5.2
VarBind:
name=1.3.6.1.6.3.1.1.4.3.0
=_BindValue:
value=ObjectSyntax:
simple=SimpleSyntax:
objectID-value=1.3.6.1.4.1.1234.7.0.1
VarBind:
name=1.3.6.1.4.1.1234.7.1
=_BindValue:
value=ObjectSyntax:
simple=SimpleSyntax:
string-value=desktop
VarBind:
name=1.3.6.1.4.1.1234.7.2
=_BindValue:
value=ObjectSyntax:
simple=SimpleSyntax:
string-value=TESTING
VarBind:
name=1.3.6.1.4.1.1234.7.3
=_BindValue:
value=ObjectSyntax:
simple=SimpleSyntax:
string-value=CODE
在向调试器添加“io”时,我在最后得到了这个消息-这是一条标准消息还是意味着消息已排队而没有离开?在
2019-05-06 04:55:42914 pysnmp:sendMessage:输出消息排队(164个八位字节) 00000:30 81 A1 02 01 01 04 06 70 75 62 6C 69 63 A7 81
我不是pysnmp的专家,但问题似乎来自snmp设置。你为探员安排好了吗?请检查http://www.net-snmp.org/docs/man/snmpd.conf.html的版本、rwusers、groups等设置。 如果您需要替代品,请检查: https://github.com/pief/python-netsnmpagent 和 https://github.com/hosthvo/pyagentx
netsnmpagent不能发送陷阱,但您可以自己添加该规范。在
我推荐pyagentx。使用主代理有点困难,但是您可以创建agentx并扩展它。但别忘了重新设置snmpd.conf公司一
您的消息尚未发送,因为主循环尚未启动。在
您可能应该导入},因为前者最终默认为
pysnmp.hlapi
,而不是{pysnmp.hlapi.asyncore.sync
,后者只为一个查询在内部运行主循环。在pysnmp.hlapi.asyncore
模块是异步的。这意味着除了提交消息之外,还需要运行主循环(snmpEngine.transportDispatcher.runDispatcher()
)。您可以找到一个异步使用的example,但现在看来您只需要同步版本。在相关问题 更多 >
编程相关推荐