python SNMP 扫描网段

 

使用方法,命令行参数: Useage: on python2

python pysnmp_scan_script.py ipsubnet community

python pysnmp_scan_script.py 192.168.1/24 public

python pysnmp_scan_script.py 192.168.1.0/25 secret

 

pysnmp_scan_script.py


from pysnmp.hlapi import *
import netaddr
import sys


def snmp_devcie_scan(comnty, hostip, ):
    errorIndication, errorStatus, errorIndex, varBinds = next(
        getCmd(SnmpEngine(),
               CommunityData(comnty, mpModel=0),
               UdpTransportTarget((hostip, 161), timeout=1, retries=0),
               ContextData(),
               ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysName', 0)),
               ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysDescr', 0)),
               ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysUpTime', 0)),
               ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysLocation', 0)),
               ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysContact', 0)),
               ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysObjectID', 0)),
               )

    )

    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:
            # print(' = '.join([x.prettyPrint() for x in varBind]))
            print varBinds
            # return varBinds[0][1], varBinds[1][1], varBinds[2][1], varBinds[3][1]
            # print varBind
            return varBinds

mgmt_ip_list = []
snmp_scanrange = netaddr.IPNetwork(sys.argv[1])
for ip in snmp_scanrange.iter_hosts():
    mgmt_ip_list.append(ip)

snmpwalk_data = []
for mgmtIP in mgmt_ip_list:
    # print str(mgmtIP)
    try:
        snmp_raw_data = snmp_devcie_scan(comnty=sys.argv[2], hostip=str(mgmtIP))
        snmpscandata = {'sysname': str(snmp_raw_data[0][1]),
                        'sysdesc': str(snmp_raw_data[1][1]),
                        'sysuptime': str(snmp_raw_data[2][1]),
                        'syslocation': str(snmp_raw_data[3][1]),
                        'syscontact': str(snmp_raw_data[4][1]),
                        'sysobjectid': str(snmp_raw_data[5][1]),
                        'mgmtIP': str(mgmtIP),
                        }
        snmpwalk_data.append(snmpscandata)
    except:
        print 'snmp scan error %s' % str(mgmtIP)

print snmpwalk_data
 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值