extrabacon / python-shell

Run Python scripts from Node.js with simple (but efficient) inter-process communication through stdio
2.08k stars 217 forks source link

Debugging parse error #91

Open BusbyActual opened 6 years ago

BusbyActual commented 6 years ago

Hey there!

I ran my python script from python it runs just fine. I tried running through python-shell with v2.7 and v3.6 of python and I get the same error. I read through your issues and it looks like I don't need to do anything special to import python libraries python-shell does all the heavy lifting. I'm at a loss for how to proceed.

Error

{ Error: 2017-08-10 15:08:54,666 pysmi: running pysmi version 0.1.3
2017-08-10 15:08:54,666 pysmi: debug category 'searcher' enabled
2017-08-10 15:08:54,666 pysmi: debug category 'reader' enabled
2017-08-10 15:08:54,666 pysmi: debug category 'compiler' enabled
2017-08-10 15:08:54,825 pysmi: current MIB source(s): FileReader{"/users/admin/desktop/mib/mibFiles"}, HttpReader{"http://mibs.snmplabs.com:80/asn1/"}
2017-08-10 15:08:54,825 pysmi: current compiled MIBs location(s): StubSearcher
2017-08-10 15:08:54,825 pysmi: current compiled MIBs location(s): StubSearcher, PyPackageSearcher{"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pysnmp/smi/mibs"}, PyPackageSearcher{"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pysnmp/smi/mibs/instances"}, PyPackageSearcher{"pysnmp_mibs"}
2017-08-10 15:08:54,825 pysmi: current MIB borrower(s):

    at PythonShell.parseError (/Users/admin/Desktop/mib/node_modules/python-shell/index.js:190:17)
    at terminateIfNeeded (/Users/admin/Desktop/mib/node_modules/python-shell/index.js:98:28)
    at ChildProcess.<anonymous> (/Users/admin/Desktop/mib/node_modules/python-shell/index.js:88:9)
    at emitTwo (events.js:125:13)
    at ChildProcess.emit (events.js:213:7)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
  executable: '/usr/local/bin/python3',
  options: null,
  script: 'test.py',
  args: null,
  exitCode: 0 }
results:  undefined

Test.py

from pysnmp.smi import builder, view, compiler, error, instrum, exval

from pysmi import debug
debug.setLogger(debug.Debug('searcher', 'reader', 'compiler'))

# Create MIB loader/builder
mibBuilder = builder.MibBuilder()
arr = []

# Optionally attach PySMI MIB compiler (if installed)
print('Attaching MIB compiler...'),
compiler.addMibCompiler(mibBuilder, sources=['/users/admin/desktop/mib/mibFiles/', 'http://mibs.snmplabs.com/asn1/'], genTexts=True)
print('done')

# Optionally set an alternative path to compiled MIBs
print('Setting MIB sources...')
mibBuilder.addMibSources(builder.DirMibSource('/users/admin/desktop/mib/mibfiles/'))
print(mibBuilder.getMibSources())
print('done')

print('Loading MIB modules...'),
mibBuilder.loadModules('SNMPv2-MIB', 'SNMP-FRAMEWORK-MIB', 'SNMP-COMMUNITY-MIB', 'RS-COMMON-MIB', 'RS-XX9-SMI-MIB' , 'RS-XX9-TC-MIB', 'RS-XX9-COMMON-MIB')

# RS-XX9-ATSC-MIB', 'RS-XX9-ATV-MIB', 'RS-XX9-AIR-COOLING-MIB');
# mibBuilder.loadModules('SNMPv2-MIB', 'SNMP-FRAMEWORK-MIB', 'SNMP-COMMUNITY-MIB', 'RS-COMMON-MIB', 'RS-XX9-AIR-COOLING-MIB', 'RS-XX9-ATSC-MIB', 'RS-XX9-ATV-MIB', 'RS-XX9-COMMON-MIB', 'RS-XX9-DAB-MIB', 'RS-XX9-DTMB-MIB', 'RS-XX9-DVBT-MIB', 'RS-XX9-DVBT2-MIB', 'RS-XX9-FM-MIB', 'RS-XX9-ISDBT-MIB', 'RS-XX9-LIQUID-COOLING-MIB', 'RS-XX9-MTX-MIB', 'RS-XX9-SMI-MIB', 'RS-XX9-TC-MIB', 'RS-XX9-TX-MIB');
 # RS-COMMON-MIB         - mandatory for this MIB
 #                - RS-XX9-SMI-MIB        - mandatory for this MIB
 #                - RS-XX9-TC-MIB         - mandatory for this MIB
 #                - RS-XX9-COMMON-MIB
# print('done')

print('Indexing MIB objects...'),
mibView = view.MibViewController(mibBuilder)
print('done')

# print('MIB symbol name lookup by OID: '),
# oid, label, suffix = mibView.getNodeName((1, 3, 6, 1, 4, 1))
# print(oid, label, suffix)

# print('MIB symbol name lookup by label: '),
# oid, label, suffix = mibView.getNodeName((1, 3, 6, 1, 4, 1, 'mib-2', 1, 'sysDescr'))
# print(oid, label, suffix)

print('MIB symbol name lookup by symbol description: '),
oid, label, suffix = mibView.getNodeName(('sysDescr',))
oid, label, suffix = mibView.getNodeName(('snmpEngineID',), 'SNMP-FRAMEWORK-MIB')
print(oid, label, suffix)

print('MIB 1: '),
mibName, objName = 'SNMP-FRAMEWORK-MIB', 'snmpEngineID'
mibObj, = mibBuilder.importSymbols(mibName, objName)
print(mibObj.getDescription())

mibName, objName, restOfOid = mibView.getNodeLocation(oid)
mibObj, = mibBuilder.importSymbols(mibName, objName)
print(mibObj.getDescription())

print('MIB 2: '),
mibName, objName = 'SNMP-FRAMEWORK-MIB', 'snmpEngineID'
mibObj, = mibBuilder.importSymbols(mibName, objName)
print(mibObj.getDescription())

mibName, objName, restOfOid = mibView.getNodeLocation(oid)
mibObj, = mibBuilder.importSymbols(mibName, objName)
print(mibObj.getDescription())

print('MIB object value pretty print: '),
mibNode, = mibBuilder.importSymbols('SNMP-FRAMEWORK-MIB', 'snmpEngineID')
print(mibNode.syntax.prettyPrint())

print('MIB symbol location lookup by name: '),
modName, symName, suffix = mibView.getNodeLocation(('snmpCommunityEntry',))
print(symName, modName)

print('MIB node lookup by location: '),
rowNode, = mibBuilder.importSymbols(modName, symName)
print(rowNode)

print('Conceptual table index value to oid convertion: '),
oid = rowNode.getInstIdFromIndices('router')
print(oid)

print('Conceptual table index oid to value convertion: '),
print(rowNode.getIndicesFromInstId(oid))

print('MIB tree traversal')
oid, label, suffix = mibView.getFirstNodeName()
while 1:
    try:
        mibName, objName, mibName2 = 'SNMP-FRAMEWORK-MIB', 'snmpEngineID', 'RS-COMMON-MIB'
        mibObj, = mibBuilder.importSymbols(mibName, objName)
        # mibObj2, = mibBuilder.importSymbols(mibName2);
        # print(mibBuilder['RS-COMMON-MIB'])

        modName, nodeDesc, suffix = mibView.getNodeLocation(oid)
        # mibObj, = mibBuilder.importSymbols(modName, nodeDesc)
        # print(mibObj.getDescription())

        print('%s::%s == %s' % (modName, nodeDesc, oid))
        arr.append({modName: modName, nodeDesc: nodeDesc, oid: oid})
        oid, label, suffix = mibView.getNextNodeName(oid)

    except error.NoSuchObjectError:
        break

print('Building MIB tree...'),
mibInstrum = instrum.MibInstrumController(mibBuilder)
print('done')

print('Building table entry index from human-friendly representation...'),
snmpCommunityEntry, = mibBuilder.importSymbols(
    'SNMP-COMMUNITY-MIB', 'snmpCommunityEntry'
)
instanceId = snmpCommunityEntry.getInstIdFromIndices('my-router')
print('done')

# print('Create/update SNMP-COMMUNITY-MIB::snmpCommunityEntry table row: ')
# varBinds = mibInstrum.writeVars(
#     ((snmpCommunityEntry.name + (2,) + instanceId, 'mycomm'),
#      (snmpCommunityEntry.name + (3,) + instanceId, 'mynmsname'),
#      (snmpCommunityEntry.name + (7,) + instanceId, 'volatile'))
# )
# for oid, val in varBinds:
#     print('%s = %s' % ('.'.join([str(x) for x in oid]), val.prettyPrint()))
# print('done')

print('Read whole MIB (table walk)')
oid, val = (), None
while 1:
    oid, val = mibInstrum.readNextVars(((oid, val),))[0]
    if exval.endOfMib.isSameTypeWith(val):
        break
    print('%s = %s' % ('.'.join([str(x) for x in oid]), val.prettyPrint()))
print('done')

print('Unloading MIB modules...'),
mibBuilder.unloadModules()
print('done')

print (arr);

# print('Modules traversal')
# modName = mibView.getFirstModuleName()
# while 1:
#     if modName: print(modName)
#     try:
#         modName = mibView.getNextModuleName(modName)
#     except error.SmiError:
#         break
phenric commented 6 years ago

I have the same issue. Did you fix it ? Thanks a lot