Python Pysnmp命令响应程序包装

Python Pysnmp命令响应程序包装,python,ubuntu,pysnmp,Python,Ubuntu,Pysnmp,我想开发一个简单的pysnmp命令响应程序来监听我的测试仪器设备,获取来自该设备的请求,并在我的主机PC(Ubuntu)中用我自己的命令(Telnet命令)替换它们,然后将其发送到评估板。过去在主机上也支持SNMP,我只想在设备上保留exists插件的结构,只更改主机端 请不要问我为什么那样做。 我已经准备好了在SNMP中与设备一起工作的MIB文件。安装在设备上的插件知道如何工作,并使用我知道的OID发送MIB OID,并根据需要在主机PC上用我自己的命令替换。 请参见流程,例如从评估板获取频率

我想开发一个简单的pysnmp命令响应程序来监听我的测试仪器设备,获取来自该设备的请求,并在我的主机PC(Ubuntu)中用我自己的命令(Telnet命令)替换它们,然后将其发送到评估板。过去在主机上也支持SNMP,我只想在设备上保留exists插件的结构,只更改主机端

请不要问我为什么那样做。 我已经准备好了在SNMP中与设备一起工作的MIB文件。安装在设备上的插件知道如何工作,并使用我知道的OID发送MIB OID,并根据需要在主机PC上用我自己的命令替换。 请参见流程,例如从评估板获取频率:

设备发送命令中的插件以获取频率(MIB OID): 1.3.6.1.4.1.55555.1.1.5.1.1.2.1

监听设备(SNMPv1端口161),获取来自设备的频率请求(1.3.6.1.4.1.55555.1.1.5.1.1.2.1),并在本地PC主机(Ubuntu)中替换它:获取\u频率\u mycommand\u telnet


如何使用最简单的Python 2.7实现这一点?

让我建议您将脚本基于

您可以实现您的
telnet
通信,即自定义的
\uuuu调用()。确保设置正确以使此对象可通过SNMP寻址

另外,添加对SNMP设置操作的支持,并可能将传入值传递到
\uuuuu call\uuuu()
或您可能想要实现的其他方法中

如果你不需要它,你可能想要抓


请记住,在这个实现中,
\uuuuuu call()
是阻塞的,因此在完成
\uuuu call()
之前不会处理其他SNMP查询。您可以通过使telnet客户端异步来提高它的性能和并发性。

[link]@Ilya Etingof,感谢您的详细回答,事实上,我尝试以您的链接示例为基础实现它。我几乎没有深入使用SNMP的经验。您是否打算使用:errorIndication、errorStatus、errorIndex、varBinds=next(setCmd(SnmpEngine(),…)请提供如何实现SET命令的示例。[link](@Ilya Etingof),如何将我的MIB导入示例脚本?为了全面了解SNMP,我建议您参考。可以查看SET命令示例。要使pysnmp加载特定的MIB文件,您应该将其指向一个目录/URL,在该目录/URL中,它可以找到您引用的MIB及其所有依赖项。这可以如图所示完成。