我刚开始使用Python,所以请耐心等待。 我一直试图在谷歌,Stack Overflow,Github,python.org以及snmplabs.com的最后3天找到这个错误的解决方案。我已经从其他错误中取得了进展(部分归功于上述网站),但这个让我感到难过,我似乎无法解决它。
我正在运行以下版本的东西: Windows 10企业版64位 python 3.6,pysnmp 4.4.4,pyasn1 0.2.3 我正在使用paramiko作为GUI的ssh和tkinter 我的项目是使用Visual Studio Code v1.20.1
组成的基本上我已经创建了一个python应用程序,它登录到cisco交换机并将一个vlan添加到一个trunk,用另一个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'
],
},
}
*请忽略这些奇怪的缩进,因为我试图让格式正确呈现在这里
道歉但是,虽然我在过去几天里已经做了很多关于这方面的阅读,但我并没有完全了解包,模块,选项等内容,所以这对我来说有点陌生。
如果有人能看到我出错的地方或者我需要提供更多信息,请告诉我。任何援助将不胜感激。 感谢
答案 0 :(得分:0)
在python-forum的 snippsat 的帮助下,我终于有了这个工作。 基本上cx_freeze不会很好玩,所以我们最终使用pyinstaller对#34; spec"进行了一些调整。文件(As detailed at python-forum),现在一切正常。