pysnmp.smi.error.MibNotFoundError: No module __SNMP-FRAMEWORK-MIB loaded at <pysnmp.smi.builder.MibBuilder object at 0x0418A110>
pysnmp.smi.error.MibNotFoundError: No module __SNMP-FRAMEWORK-MIB loaded at <pysnmp.smi.builder.MibBuilder object at 0x0418A110>
我才刚开始 Python 所以请多多包涵。
在过去 3 天里,我一直在 google、Stack Overflow、Github、python.org 和 snmplabs.com 中尝试找到解决此错误的方法。我已经从其他错误中取得进展(部分归功于上述网站),但这个错误让我感到难过,我似乎无法解决它。
我运行正在使用以下版本的东西:
Windows 10 企业版 64 位
python 3.6,pysnmp 4.4.4,pyasn1 0.2.3
我使用 paramiko 作为 ssh 和 tkinter 作为 GUI
我的项目是使用 Visual Studio 代码 v1.20.1
组成的
基本上我已经制作了一个 python 应用程序,它登录到 cisco 交换机并将 vlan 添加到 t运行k,用另一个 vlan 替换它,或者删除两个 vlan
每次进行这些 vlan 更改之一时,脚本都会向 NMS 发送一个 snmp 陷阱,说明刚刚完成的操作。陷阱只是一个 OID,如下所示:
def sendTrap(system):
debug.setLogger(debug.Debug('msgproc'))
next(sendNotification(SnmpEngine(),
CommunityData('blahblah'),
UdpTransportTarget(('1.1.1.1', 162)),
ContextData(),
'trap',
# sequence of custom OID-value pairs
[ObjectType(ObjectIdentity('1.3.6.1.2.1.1.1.0'), OctetString(system))]))
也会发生其他一些事情,例如进行更改时的背景颜色,以及计时器开始计时,在预定的时间后重置所有内容。
当我 运行 作为 python 脚本时,程序运行完美。
但是,当我使用 cx_freeze 创建我的小应用程序的 exe 文件时,除了 snmp 陷阱之外,一切正常,我目前收到以下回溯错误:
2018-02-17 02:17:39,956 pysnmp: running pysnmp version 4.4.4
2018-02-17 02:17:39,957 pysnmp: debug category 'msgproc' enabled
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python\Python36-32\lib\site-packages\pysnmp\entity\engine.py", line 91, in __init__
'__SNMP-FRAMEWORK-MIB', 'snmpEngineMaxMessageSize')
File "C:\Python\Python36-32\lib\site-packages\pysnmp\smi\builder.py", line 409, in importSymbols
'No module %s loaded at %s' % (modName, self)
pysnmp.smi.error.MibNotFoundError: No module __SNMP-FRAMEWORK-MIB loaded at pysnmp.smi.builder.MibBuilder object at 0x034C9150
模块 __SNMP-FRAMEWORK-MIB
位于 C:\Python\Python36-32\Lib\site-packages\pysnmp\smi\mibs\instances
中,我将此文件夹包含在安装文件中,如下所示(现在这是我认为我出错的地方):
options = {
'build_exe': {
#'packages':packages,
'include_files':[
os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tk86t.dll'),
os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll'),
'C:\Python\Python36-32\Lib\site-packages\idna',
'C:\Python\Python36-32\Lib\site-packages\pysnmp\smi\mibs',
'C:\Python\Python36-32\Lib\site-packages\pysnmp\smi\mibs\instances'
],
},
}
*请忽略奇怪的缩进,因为我试图获得正确的格式以在此处显示它
抱歉,虽然我在过去几天阅读了大量相关内容,但我对包、模块、选项和包含等内容并不完全了解,因此对我来说有点陌生。
如果有人能看出我哪里出错了,或者如果我需要提供更多信息,请告诉我。任何帮助将不胜感激。
谢谢
在 snippsat at python-forum 的大力帮助下,我终于可以使用它了。
基本上 cx_freeze 不会很好玩,所以我们最终使用 pyinstaller 对 "spec" 文件 (As detailed at python-forum) 稍作调整,现在一切正常。
我才刚开始 Python 所以请多多包涵。 在过去 3 天里,我一直在 google、Stack Overflow、Github、python.org 和 snmplabs.com 中尝试找到解决此错误的方法。我已经从其他错误中取得进展(部分归功于上述网站),但这个错误让我感到难过,我似乎无法解决它。
我运行正在使用以下版本的东西: Windows 10 企业版 64 位 python 3.6,pysnmp 4.4.4,pyasn1 0.2.3 我使用 paramiko 作为 ssh 和 tkinter 作为 GUI 我的项目是使用 Visual Studio 代码 v1.20.1
组成的基本上我已经制作了一个 python 应用程序,它登录到 cisco 交换机并将 vlan 添加到 t运行k,用另一个 vlan 替换它,或者删除两个 vlan
每次进行这些 vlan 更改之一时,脚本都会向 NMS 发送一个 snmp 陷阱,说明刚刚完成的操作。陷阱只是一个 OID,如下所示:
def sendTrap(system):
debug.setLogger(debug.Debug('msgproc'))
next(sendNotification(SnmpEngine(),
CommunityData('blahblah'),
UdpTransportTarget(('1.1.1.1', 162)),
ContextData(),
'trap',
# sequence of custom OID-value pairs
[ObjectType(ObjectIdentity('1.3.6.1.2.1.1.1.0'), OctetString(system))]))
也会发生其他一些事情,例如进行更改时的背景颜色,以及计时器开始计时,在预定的时间后重置所有内容。
当我 运行 作为 python 脚本时,程序运行完美。
但是,当我使用 cx_freeze 创建我的小应用程序的 exe 文件时,除了 snmp 陷阱之外,一切正常,我目前收到以下回溯错误:
2018-02-17 02:17:39,956 pysnmp: running pysnmp version 4.4.4
2018-02-17 02:17:39,957 pysnmp: debug category 'msgproc' enabled
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python\Python36-32\lib\site-packages\pysnmp\entity\engine.py", line 91, in __init__
'__SNMP-FRAMEWORK-MIB', 'snmpEngineMaxMessageSize')
File "C:\Python\Python36-32\lib\site-packages\pysnmp\smi\builder.py", line 409, in importSymbols
'No module %s loaded at %s' % (modName, self)
pysnmp.smi.error.MibNotFoundError: No module __SNMP-FRAMEWORK-MIB loaded at pysnmp.smi.builder.MibBuilder object at 0x034C9150
模块 __SNMP-FRAMEWORK-MIB
位于 C:\Python\Python36-32\Lib\site-packages\pysnmp\smi\mibs\instances
中,我将此文件夹包含在安装文件中,如下所示(现在这是我认为我出错的地方):
options = {
'build_exe': {
#'packages':packages,
'include_files':[
os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tk86t.dll'),
os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll'),
'C:\Python\Python36-32\Lib\site-packages\idna',
'C:\Python\Python36-32\Lib\site-packages\pysnmp\smi\mibs',
'C:\Python\Python36-32\Lib\site-packages\pysnmp\smi\mibs\instances'
],
},
}
*请忽略奇怪的缩进,因为我试图获得正确的格式以在此处显示它
抱歉,虽然我在过去几天阅读了大量相关内容,但我对包、模块、选项和包含等内容并不完全了解,因此对我来说有点陌生。
如果有人能看出我哪里出错了,或者如果我需要提供更多信息,请告诉我。任何帮助将不胜感激。 谢谢
在 snippsat at python-forum 的大力帮助下,我终于可以使用它了。 基本上 cx_freeze 不会很好玩,所以我们最终使用 pyinstaller 对 "spec" 文件 (As detailed at python-forum) 稍作调整,现在一切正常。