回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>当我在OID上使用snmpwalk时(1.3.6.1.4.1.2021.4),我得到以下结果:</p>
<pre><code>UCD-SNMP-MIB::memIndex.0 = INTEGER: 0
UCD-SNMP-MIB::memErrorName.0 = STRING: swap
UCD-SNMP-MIB::memMinimumSwap.0 = INTEGER: 16000 kB
</code></pre>
<p>但是,当我使用pysnmp模块查询相同的OID时,得到的结果是:</p>
^{pr2}$
<p>我已经把pysnmp放进去了操作系统环境我使用的代码是:</p>
<pre><code>from pysnmp.entity.rfc3413.oneliner import cmdgen
from pysnmp.smi import builder, view, error
errorIndication, errorStatus, errorIndex, \
varBindTable = cmdGen.nextCmd (
cmdgen.CommunityData('test-agent', 'public'),
cmdgen.UdpTransportTarget ( (localhost, 161) ),
('1.3.6.1.4.1.2021.4')
)
if errorIndication:
log.warn(errorIndication)
return
else:
if errorStatus:
log.warn( '%s at %s\n' % (
errorStatus.prettyPrint (),
errorIndex and varBindTable[-1][int (errorIndex) - 1] or '?'
))
return
else:
for varBindTableRow in varBindTable:
for oid, val in varBindTableRow:
(symName, modName), indices = cmdgen.mibvar.oidToMibName(
cmdGen.mibViewController, oid
)
val = cmdgen.mibvar.cloneFromMibValue(
cmdGen.mibViewController, modName, symName, val
)
print varBindTableRow
</code></pre>
<p>我的问题是为什么snmpwalk和pysnmp结果不同,我应该如何使用pysnmp模块获得与snmpwalk相同的结果?在</p>
<hr/>
<p><em><strong>已编辑</strong></em>:</p>
<p>我尝试了这个代码,但是在查询1.3.6.1.2.1.4.22.1时
我得到以下错误</p>
<pre><code>NoSuchObjectError: NoSuchObjectError({'str': 'No MIB info for (1, 3, 6, 1, 4, 1, 2021, 4, 1, 0) (closest parent (1, 3, 6, 1, 4, 1))'})
</code></pre>
<p>我已将IP-MIB模块加载为:</p>
<pre><code>mibBuilder = builder.MibBuilder()
mibPath = mibBuilder.getMibSources()+(builder.DirMibSource(path_to_mib_dir),)
mibBuilder.setMibSources(*mibPath)
mibBuilder.loadModules('IP-MIB')
mibView = view.MibViewController(mibBuilder)
</code></pre>
<p>我困惑的是如何在中使用这个mibView</em></strong></p>
<pre><code>(symName,modName),indices=cmdgen.mibvar.oidToMibName(cmdGen.mibViewController, oid)
val=cmdgen.mibvar.cloneFromMibValue(cmdGen.mibViewController,modName, symName, val)
</code></pre>
<p>如果<strong>cmdGen.mibViewController</strong>是否替换为mibView</strong>?在</p>
<p>但它适用于OID 1.3.6.1.2.1.1.3:
我得到了预期的结果:</p>
<pre><code>SNMPv2-MIB::sysUpTime.0 = 27
</code></pre>