首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要和那些OID不同的MIB吗?

我需要和那些OID不同的MIB吗?
EN

Stack Overflow用户
提问于 2016-09-22 13:51:14
回答 1查看 832关注 0票数 2

我获得了一个通过SNMP检索信息的遗留powershell脚本,我试图使用snimpy将其移植到Python中。

代码语言:javascript
复制
$PrintersIP = '10.100.7.47', '10.100.7.48'
Function Get-SNMPInfo ([String[]]$Printers) {
    Begin {
        $SNMP = New-Object -ComObject olePrn.OleSNMP
    }
    Process {
        Foreach ($IP in $Printers) {
            $SNMP.Open($IP,"public",2,3000)
            [PSCustomObject][Ordered]@{
                Name        = $SNMP.Get(".1.3.6.1.2.1.1.5.0")
                IP          = $IP
                UpTime      = [TimeSpan]::FromSeconds(($SNMP.Get(".1.3.6.1.2.1.1.3.0"))/100)
                Model       = $SNMP.Get(".1.3.6.1.2.1.25.3.2.1.3.1")
                Description = $SNMP.Get(".1.3.6.1.2.1.1.1.0")
                #Contact     = $SNMP.Get(".1.3.6.1.2.1.1.4.0")
                #SN          = $SNMP.Get(".1.3.6.1.2.1.43.5.1.1.17.1")
                #Location    = $SNMP.Get(".1.3.6.1.2.1.1.6.0")
                #TonerName   = $SNMP.Get("43.11.1.1.6.1.1")
            }
        }
    }
    End {
        $SNMP.Close()
    }
}
Get-SNMPInfo $PrintersIP | ft -AutoSize *

Snimpy用法

正式文件中,他们使用load方法加载MIB文件。

代码语言:javascript
复制
from snimpy.manager import Manager as M
from snimpy.manager import load

load("IF-MIB")
m = M("localhost")
print(m.ifDescr[0])

查找OID名称

我找不到一些标识符的OID名称。例如:

  • 1.3.6.1.2.1.1.5.0,→,nothing;
  • 1.3.6.1.2.1.1.5sysName.

问题

  • 根据我尝试使用的OID_的名称,是否需要加载不同的MIB文件(例如Printer-MIBIF-MIB等)
  • 我在哪里能找到丢失的OID__的名字?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-22 16:40:11

如果您使用load()方法,那么标量和行名将作为实例属性使用,因此您可以查询'sysContact‘等,但是由于'sysDescr’和'sysName‘不是IF-MIB的一部分,您将无法获得它。

您将需要加载相关的MIB,如SNMPv2-MIB,或者尝试通过OID直接获取值。

更新:--我已经看过了--而且看起来很像pysnmp在做这个集合,所以您可以直接使用它。下面的示例是收集一个新的不同的SNMP值,一些是通过OID收集的,另一些是通过MIB中的命名变量收集的(如果您想通过名称获取相关的MIB,则需要有相应的MIB)。这个示例基本上是从pySNMP文档中提取的。

代码语言:javascript
复制
from pysnmp.entity.rfc3413.oneliner import cmdgen

cmdGen = cmdgen.CommandGenerator()

errorIndication, errorStatus, errorIndex, varBinds = cmdGen.getCmd(
    cmdgen.CommunityData('public'),
    cmdgen.UdpTransportTarget(('demo.snmplabs.com', 161)),
    '1.3.6.1.2.1.1.1.0',            # sysDescr
    '1.3.6.1.2.1.1.2.0',            # sysObjectId
    '1.3.6.1.2.1.1.3.0',            # upTime
    '1.3.6.1.2.1.1.4.0',            # Contact
    '1.3.6.1.2.1.1.5.0',            # sysName
    '1.3.6.1.2.1.1.6.0',            # Location
    cmdgen.MibVariable('SNMPv2-MIB', 'sysDescr', 0),     #.1.3.6.1.2.1.1.1.0 sysDescr
    cmdgen.MibVariable('SNMPv2-MIB', 'sysName', 0)     #.1.3.6.1.2.1.1.5.0 sysName
)



# Check for errors and print out results
if errorIndication:
    print(errorIndication)
else:
    if errorStatus:
        print('%s at %s' % (
            errorStatus.prettyPrint(),
            errorIndex and varBinds[int(errorIndex)-1] or '?'
            )
        )
    else:
        for name, val in varBinds:
            print('%s = %s' % (name.prettyPrint(), val.prettyPrint()))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39640966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档