python netsnmp与pysnmp

据说,如果论性能,netsnmp更强,而且netsnmp天生支持walk, 但是在安装方式上, pysnmp简单直接,netsnmp需要先安装netsnmp,然后安装相应的python模块,比较麻烦。

参考 http://www.huilog.com/?p=629, 基本上分为下载, python setup.py build, python setup.py install 两步

而且pysnmp也可以自己写代码实现walk 

def walk(host, oid, community):
    for (errorIndication,errorStatus,errorIndex,varBinds) in nextCmd(SnmpEngine(), 
        CommunityData(community),
        UdpTransportTarget((host, 161)),
        ContextData(),
        ObjectType(ObjectIdentity(oid)),
        lexicographicMode=False  # 限制其只在指定范围内walk
        ):
        if errorIndication:
            # print(errorIndication, file=sys.stderr)
            break
        elif errorStatus:
            # print('%s at %s' % (errorStatus.prettyPrint(),
            #                     errorIndex and varBinds[int(errorIndex) - 1][0] or '?'),
            #                     file=sys.stderr)
            break
        else:
            # return varBinds

            for varBind in varBinds:
                yield varBind
            #     print(varBind)

 

def get(host, oid, snmpCommunity):
    errorIndication, errorStatus, errorIndex, varBinds = next(
        getCmd(SnmpEngine(),
               CommunityData(snmpCommunity),
               UdpTransportTarget((host, 161)),
               ContextData(),
               ObjectType(ObjectIdentity(oid))
               )
    )

    if errorIndication:
        print(errorIndication)
    elif errorStatus:
        print('%s at %s' % (errorStatus.prettyPrint(),
                            errorIndex and varBinds[int(errorIndex) - 1][0] or '?'))
    else:
        for varBind in varBinds:
            yield varBind

 

转载于:https://www.cnblogs.com/yeyong/p/10938775.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值